GDI+读图片资源的问题!

Sime507 2005-10-10 11:16:36
GDI+编程将一个图片显示出来的代码:
Image image(L"Grapes.jpg"); //GDI+从文件中读图片
graphics.DrawImage(&image, 60, 10); //显示图片

我的图片从资源包中解压缩到内存中了,有没有办法让GDI+直接从内存中读数据?

这个问题困扰我好几天了,如果没有好的办法,只能将数据写到一个临时文件,再从文件中读取,不过这种方法严重影响程序效率。
...全文
170 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiacool 2005-10-16
  • 打赏
  • 举报
回复
Bitmap p1(L"d:\\1.bmp");


for(int i=0;i<100;i++)
p1.SetPixel(i,40,Color(255,255,0,0));


gr.DrawImage(&p1,0,0,crt.Width(),crt.Height());
为什么 显示出来的图像 没有被setpixel 这是什么道理?
蒋晟 2005-10-15
  • 打赏
  • 举报
回复
http://www.codeproject.com/vcpp/gdiplus/cgdiplusbitmap.asp
Loading JPG & PNG resources using GDI+
zzwu 2005-10-13
  • 打赏
  • 举报
回复
如果不是bmp就麻烦了.
lijigang1982 2005-10-12
  • 打赏
  • 举报
回复
不知道你是什么意思,也不知道你用什么语言开发!
我现在学习用c#开发图形处理程序,就我目前所了解的情况!直接在界面上划出图象,整个过程非常慢!一般要用双倍缓存技术,即先把要画的东西画到某个图象对象里,再在待实现的界面上用drawimage函数画出所要的图象!如:graphics.DrawImage(image, 60, 10),这样处理还得等一小会!
我曾经看到过一个实现灰度处理的程序,它在c#的unsafe环境下执行,用了指针,给你罗列出来:
// GDI+ return format is BGR, NOT RGB.
Bitmap b= new Bitmap(pictureBox1.Image);
BitmapData bmData = b.LockBits(new Rectangle(0, 0, b.Width, b.Height),
ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
int stride = bmData.Stride; // bytes in a row 3*b.Width
System.IntPtr Scan0 = bmData.Scan0;
unsafe
{
byte * p = (byte *)(void *)Scan0;
byte red, green, blue;
int nOffset = stride - b.Width*3;
for(int y=0;y < b.Height;++y)
{
for(int x=0; x < b.Width; ++x )
{
blue = p[0];
green = p[1];
red = p[2];
p[0] = p[1] = p[2] = (byte)(.299 * red + .587 * green + .114 * blue);
p += 3;
}
p += nOffset;
}
}
b.UnlockBits(bmData);
pictureBox2.Image=b;
我实际运行了这个程序,速度非常快!只是还不太理解里面的意思!
写了这么多,不知道解决了你的问题没有,希望对你有帮助!
zzwu 2005-10-10
  • 打赏
  • 举报
回复
"解压缩到内存中"是否意味已经是bmp格式了?

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧