พลิกบิตแมปใน .NET Compact Framework

ฉันมีวัตถุ Bitmap ที่บางครั้งฉันต้องพลิกในแนวนอน บางครั้งแนวตั้ง บางครั้งทั้งสองอย่าง เฟรมเวิร์กแบบเต็มมีเมธอด Image.RotateFlip() ซึ่งตรงกับที่ฉันต้องการ น่าเสียดาย เช่นเดียวกับฟีเจอร์ที่มีประโยชน์ที่สุดในเฟรมเวิร์กแบบเต็ม วิธีการนี้ไม่มีอยู่ในเฟรมเวิร์กแบบกะทัดรัด มีวิธีง่ายๆ ในการทำเช่นนี้หรือไม่? สิ่งที่ดีที่สุดที่ฉันหาได้คือสิ่งนี้ แต่ใช้รหัสที่ไม่ปลอดภัยซึ่งฉัน ต้องการหลีกเลี่ยงและทำได้เพียงหมุนไม่พลิกเท่านั้น

แก้ไข: ตกลง ฉันพบวิธีเพิ่มประสิทธิภาพบางอย่างโดยต้องพลิกแนวตั้งเท่านั้น


person Jason    schedule 13.08.2009    source แหล่งที่มา
comment
เจสัน ลิงก์เดียวกันนั้นใช้วิธีที่ปลอดภัยในการหมุนเวียน มันบอกว่าต้องใช้เวลาเกือบ 3 นาทีในการหมุน 90 องศาบนภาพขนาด 800x600 พิกเซล ซึ่งดูเหมือนยาวเกินไปสำหรับฉัน ฉันจะลองใช้บนอุปกรณ์ของคุณเพื่อดูว่ามันทำงานอย่างไรและอาจมองหาปัญหาคอขวด จากประสบการณ์ของฉันวิธีการรับและตั้งค่าพิกเซลนั้นค่อนข้างเร็ว นอกจากนี้ยังเป็นเพียงขั้นตอนเล็กๆ ในตรรกะตั้งแต่การหมุนไปจนถึงการพลิก...   -  person Paul Sasik    schedule 13.08.2009
comment
เหตุใดจึงต้องหลีกเลี่ยงรหัสที่ไม่ปลอดภัย มันรวดเร็ว ใช้งานได้ และเป็นภาษาที่ถูกกฎหมายอย่างสมบูรณ์   -  person ctacke    schedule 13.08.2009


คำตอบ (2)


CF ไม่รองรับ แต่ถ้าอุปกรณ์ของคุณรองรับ Imaging Library คุณสามารถ P/Inrigg ลงไปที่ IBasicBitmapOps::พลิก SDF ได้รวมสิ่งนี้ไว้ใน OpenNETCF. Drawing.Imaging.ImageUtils

person ctacke    schedule 13.08.2009
comment
นี่คือสิ่งที่ฉันกำลังมองหา ฉันได้ดำเนินการด้วยตนเองแล้วโดยใช้การจัดการตัวชี้ที่ไม่ปลอดภัย แต่นี่อาจเป็นวิธีที่ปลอดภัยกว่า - person Jason; 13.08.2009

ฉันเพิ่งอ่านบทความเกี่ยวกับเรื่องนี้ ฉันไม่ได้ลอง เพราะฉันต้องการการหมุนแบบอื่นที่ไม่ใช่ 90/180/270 แต่มันอ้างว่าเป็นวิธีที่รวดเร็วในการหมุน

http://www.codeproject.com/KB/graphics/ImageRotationForCF.aspx

[แก้ไข] เวร ฉันอ่านไม่ถูกต้อง คุณพบสิ่งนี้แล้ว.. ขออภัย

person Jeroen Pot    schedule 29.08.2009