form下的panel保存图片

yaohuang306 2010-10-20 10:34:15
各位高手,我在panel下画了个图片(通过另一个函数画的),怎么将这个区域内的图片保存下来呢?我保存时候总是个黑框。想着应该是bitmap^ bitimg 里是空的,没有图片搞的。怎么解决呢?
或者说:怎么保存form特定panel区域的图片呢?不要求分辨率什么的。
...全文
235 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaohuang306 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuyazhe 的回复:]
你如何绘制到Panel的?我建议你这样,绘制到一个位图上,然后把位图贴到Panel上,你想保存就保存这个缓存图。例如

C# code

public class Form2 : Form
{
Panel panel1 = new Panel();
public Form2()
{
panel1.Dock = DockStyle.Fill;……
[/Quote]
专门在一个按钮下调用了一个函数DrawSector(),这个是自己写的。。然后从那个函数里面直接保存就很简单,但是我要在另一个按钮按下时候再保存图像。所以就总也对不上
yaohuang306 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 yaohuang306 的回复:]
引用 1 楼 wuyq11 的回复:
Graphics g1=panel1.CreateGraphics();
Image myImage =new Bitmap(this.panel1.Width, this.panel1.Height, g1);
Graphics g2 =Graphics.FromImage(myImage);
IntPtr dc1 =g1.GetHdc();
In……
[/Quote]
就是不知道怎么将panel的图片等于我这个bitmap^ bit_img
yaohuang306 2010-10-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wuyq11 的回复:]
Graphics g1=panel1.CreateGraphics();
Image myImage =new Bitmap(this.panel1.Width, this.panel1.Height, g1);
Graphics g2 =Graphics.FromImage(myImage);
IntPtr dc1 =g1.GetHdc();
IntPtr dc2=g2.GetH……
[/Quote]
多谢多谢!!因为我用的c++ 所以有的语句还得换换。好强啊!!
兔子-顾问 2010-10-20
  • 打赏
  • 举报
回复
你如何绘制到Panel的?我建议你这样,绘制到一个位图上,然后把位图贴到Panel上,你想保存就保存这个缓存图。例如

public class Form2 : Form
{
Panel panel1 = new Panel();
public Form2()
{
panel1.Dock = DockStyle.Fill;
panel1.Paint += new PaintEventHandler(panel1_Paint);
panel1.Click += new EventHandler(panel1_Click);
this.Controls.Add(panel1);
}

void panel1_Click(object sender, EventArgs e)
{
//单击Panel1则保存
buffer.Save("buffer.bmp");
}

Bitmap buffer = null;
void panel1_Paint(object sender, PaintEventArgs e)
{
if (buffer == null) buffer = new Bitmap(panel1.Width, panel1.Height);
if (buffer.Width != panel1.Width || buffer.Height != panel1.Height) buffer = new Bitmap(panel1.Width, panel1.Height);
using (Graphics g = Graphics.FromImage(buffer))
{
g.DrawLine(Pens.Blue, 0, 0, 175, 233);
}
e.Graphics.DrawImage(buffer, 0, 0);
}
}
哥子谭 2010-10-20
  • 打赏
  • 举报
回复
可以使用Graphics来实现
wuyq11 2010-10-20
  • 打赏
  • 举报
回复
Graphics g1=panel1.CreateGraphics();
Image myImage =new Bitmap(this.panel1.Width, this.panel1.Height, g1);
Graphics g2 =Graphics.FromImage(myImage);
IntPtr dc1 =g1.GetHdc();
IntPtr dc2=g2.GetHdc();
BitBlt(dc2,0,0,this.panel1.Width,this.panel1.Height,dc1,0,0,13369376);
g1.ReleaseHdc(dc1);
g2.ReleaseHdc(dc2);
myImage.Save(@ "C:\a.bmp ", ImageFormat.Bmp);

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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