كيف يمكنني تحديد ما إذا كان بنك دبي الإسلامي هو أسفل إلى أعلى أو من أعلى إلى أسفل؟

StackOverflow https://stackoverflow.com/questions/662853

  •  20-08-2019
  •  | 
  •  

سؤال

إذا يمكنني إنشاء بنك دبي الإسلامي باستخدام CreateDIBSection()، يمكنني تحديد الطقس ينبغي أن يكون من أعلى إلى أسفل أو من أسفل إلى أعلى من خلال تحديد مجال biHeight من البنية BITMAPINFOHEADER إلى قيمة سلبية أو إيجابية. ومع ذلك، إذا أعطي الكلمة GetObject() على مثل صورة نقطية لملء هيكل DIBSECTION، ثم كل من dsBm.bmHeight وdsBmih.biHeight يبدو أن تكون إيجابية دائما.

هل هناك طريقة لمعرفة ما إذا كان بنك دبي الإسلامي هو من أعلى إلى أسفل أو من أسفل إلى أعلى عند كل ما لدي هو HBITMAP؟

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

المحلول

وأعتقد أن أفضل وأنت تسير لتكون قادرة على الحصول من HBITMAP ستكون GetDIBits. المشكلة مع GetDIBits ومع ذلك، هو أنه يتطلب أيضا HDC وHBITMAP أن يكون DDB.

راجع: GetDIBits وظيفة

وأنا لست إيجابية، ولكن من الممكن فسوف تفقد أي أعلى downness في عملية التحويل.

نصائح أخرى

لا، كنت في حاجة إلى BITMAPINFOHEADER لذلك، وأنها ليست قابلة للاسترداد من HBITMAP.

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

والطريقة الوحيدة لمعرفة من usermode ويبدو أن استخدام GDI لاختبار - SetPixel أعلى اليسار وأسفل بكسل اليسرى من الصورة النقطية إلى اثنين من قيم مختلفة، ثم قراءة عازلة لمعرفة الكتابة هبطت في موقع الذاكرة الأول .

وحقا الخيار الأفضل هو بناء في API الخاصة بك - whever يمكنك تمرير حول DIBSection باعتبارها HBITMAP، تأكد من أن هناك ما لا يقل عن fIsDibSectionTopDown منطقي مرت أو تخزينها، وكذلك

scroll top