سؤال

وأنا أبحث عن بعض C ++ كود للسماح لي بسرعة نقل صورة نقطية حول نافذة، واستعادة الخلفية وهي تتحرك. في الوقت الحاضر أنا التقاط محتويات النافذة إلى صورة نقطية أثناء تهيئة التطبيق وفي OnPaint () I رسم هذه الصورة النقطية وبعد ذلك رسم بلدي نقطية تراكب إعلان. أنا مضاعفة التخزين المؤقت الطلاء. يتحرك الموقف نقطية تراكب إعلان مع الماوس الذي يبطل النافذة.

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

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

المحلول

وربما سيكون أسرع وسيلة لديك أن يكون لتخزين الصور المنقولة بك في نقطية واحدة ومن ثم الحفاظ على صورة نقطية مؤقتة الثانية من نفس الحجم في الذاكرة أيضا. رسم نقطية المنقولة فوق الصورة الرئيسية الخاصة بك، وعليك أولا استخدام الدالة BitBlt API لنسخ المنطقة كنت على وشك أن رسم الصورة النقطية المنقولة على إلى نقطية مؤقتة، ثم BitBlt نقطية المنقولة الخاصة بك على صورة الرئيسية الخاصة بك. كما قمت بنقل الصورة النقطية المنقولة ثم، لو كنت 1) BitBlt الصورة النقطية درجة الحرارة على موقعه الأصلي، ثم 2) BitBlt الموقع الجديد في نقطية مؤقت، ثم 3) BitBlt الصورة المنقولة على الموقع الجديد في الصورة النقطية الرئيسية.

نصائح أخرى

ويجب عليك التحقق من قوائم صورة التي تنفذ سحب <م> آثار .

<اقتباس فقرة>   

ووAPI Win32 ويشمل وظائف ل   سحب صورة على الشاشة. ال   وظائف سحب تتحرك صورة   على نحو سلس، في اللون، ودون أي   امض المؤشر. كلا ملثمين   والصور غير المقنعة يمكن سحب.

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

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