如何在Windows Mobile中加载高分辨率图像

时间:2009-09-29 05:04:15

标签: c# .net windows-mobile

任何人都可以告诉我,如何使用C#在Windows Mobile中加载高分辨率图像。 我得到了OutOfMemoryException

3 个答案:

答案 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,包括加载大图像,然后放大部分图片。