任何人都可以告诉我,如何使用C#在Windows Mobile中加载高分辨率图像。
我得到了OutOfMemoryException
。
答案 0 :(得分:0)
使用IImagingFactory和IImage,它们是WCE 5.0中引入的com对象。
您必须为它们编写com包装器,或者使用已经包含它们的OpenNETCF。
请参阅here,了解Chris Lorton关于alphablending和影像工厂类以及如何在.net中使用它们的博客文章
答案 1 :(得分:0)
此代码在240x320的表单上显示一个带有2mb jpg图像(3000x2000左右)的表单,没有任何OOM异常。显然你需要整理它来处理bmp并释放com对象等但它确实有效,我在wm6.5模拟器上试过它。
public partial class Form1 : Form
{
IImage smallImage;
Bitmap bmp = new Bitmap(240, 320);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
IImage fullSizeImage;
IImagingFactory factory = new ImagingFactoryClass();
factory.CreateImageFromFile(@"\My Documents\My Pictures\luminous opera house.jpg", out fullSizeImage);
fullSizeImage.GetThumbnail(240, 320, out smallImage);
using (Graphics gfx = Graphics.FromImage(bmp))
{
IntPtr hdc = gfx.GetHdc();
try
{
smallImage.Draw(hdc, new Rectangle(0, 0, 240, 320), IntPtr.Zero);
}
finally
{
gfx.ReleaseHdc(hdc);
}
}
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.DrawImage(bmp, 0, 0);
}
}
答案 2 :(得分:0)
Here's a blog entry,包括加载大图像,然后放大部分图片。