سؤال

لذلك قرأت أن Streamblt يمكن أن تعكس الصور أفقيا و / أو رأسيا عن طريق إلحاق NWIDTHSRC / DIST و NHEIGHTSRC / معلمات DIST. أود هذه الوظيفة دون أداء النفقات العامة ل Stockblt. حاولت نفس التقنية مع bitblt لكنها لم تنجح.

هل هناك أي طريقة لتعكس صورة بشيء بسيط مثل Bitblt، دون مبالغة أو سوف Stockblt لا يؤثر على الأداء إذا كانت أحجام المصدر والوجهة هي نفسها؟

هل كانت مفيدة؟

المحلول

لن تؤدي Bitblt فقط عمليات الرياضيات (أو، XOR، إلخ) على البكسل الفردي المعني، فلن يقوم بتغيير حجم الصورة بأي طريقة. هذا هو بالضبط ما هو Stockblet for، و Stockblt (مقارنة بأي عملية تغيير حجم الرسومات الأخرى) بسرعة كبيرة كما هو الحال في معظم الحالات، يمكن استخدام بطاقة الرسومات لتسريع أدائها.

نصائح أخرى

ربما ستكون جميع وظائف Win32 محسنة للغاية.

ما الذي يجعلك تعتقد أن Stormblt سيكون أداء كبير؟

هل قمت بتعفة طلبك باستخدام Stormblt؟

يمكنك عكس كل بيانات الصورة النقطية بنفسك ومعرفة ما إذا كان يمكنك أن تفعل أفضل أن تمتد.

إليك رابط قد يساعدك في الخروج:

http://www.codeguru.com/cpp/gm/bitmap/ specialeffects/article.php/c1739.

لمرجع صورة تحتاج فقط إلى حلقة من خلال البكسل بترتيب عكسي. مثل إذا كنت ترغب في مرآة أفقيا، فأنت بحاجة فقط إلى القيام بما يلي:

  1. توسيع صورة قماش لمضاعفة الحجم
  2. ابدأ في الجزء السفلي من الصورة والعمل الذي توصلك إلى كتابة البكسلات في المنطقة المتطابقة من أعلى لأسفل.
  3. هل الخطوة 3 من اليسار إلى اليمين.

لا أعرف اللغة التي تستخدمها، ولكن معظمها يتيح لك التعامل مع البكسل أو البتات على أساس فردي باستخدام GDI.

لا توجد وسيلة ستكون أكثر كفاءة أن تمتد، إلا إذا كنت تعرف بعض المعلومات الإضافية حول الصورة (على سبيل المثال، هناك حدود حتى لا تضطر إلى قلب بعض البكسل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top