C#怎么让一个程序的界面的图片下保存下来
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#怎么让一个程序的界面的图片下保存下来相关的知识,希望对你有一定的参考价值。
在线等,回答满意再加分,急
我现在通过sampleapplication可以启动CyDisplayEx这个程序,我想在sampleapplication这个界面上设置一个button,通过button可以保存CyDisplayEx界面上的图片,请问这个button里该给出什么样的方法啊?
Bitmap bitmap = new Bitmap(this.Width, this.Height);
DrawToBitmap(this, bitmap, new Rectangle(0, 0, this.Width, this.Height));
bool isSave = true;
SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDialog.Title = "图片保存";
saveImageDialog.Filter = @"jpeg|*.jpg|bmp|*.bmp|gif|*.gif";
if (saveImageDialog.ShowDialog() == DialogResult.OK)
string fileName = saveImageDialog.FileName.ToString();
if (fileName != "" && fileName != null)
string fileExtName = fileName.Substring(fileName.LastIndexOf(".") + 1).ToString();
System.Drawing.Imaging.ImageFormat imgformat = null;
if (fileExtName != "")
switch (fileExtName)
case "jpg":
imgformat = System.Drawing.Imaging.ImageFormat.Jpeg;
break;
case "bmp":
imgformat = System.Drawing.Imaging.ImageFormat.Bmp;
break;
case "gif":
imgformat = System.Drawing.Imaging.ImageFormat.Gif;
break;
default:
MessageBox.Show("只能存取为: jpg,bmp,gif 格式");
isSave = false;
break;
//默认保存为JPG格式
if (imgformat == null)
imgformat = System.Drawing.Imaging.ImageFormat.Jpeg;
if (isSave)
try
images.Save(fileName, imgformat);
//MessageBox.Show("图片已经成功保存!");
catch
MessageBox.Show("保存失败,你还没有截取过图片或已经清空图片!");
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern int SendMessage(IntPtr hWnd, int msg, int wParam, int lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr SendMessage(HandleRef hWnd, int msg, IntPtr wParam, IntPtr lParam);
[DllImport("gdi32.dll", CharSet = CharSet.Auto, SetLastError = true, ExactSpelling = true)]
public static extern bool BitBlt(HandleRef hDC, int x, int y, int nWidth, int nHeight, HandleRef hSrcDC, int xSrc, int ySrc, int dwRop);
/// <summary>
/// 支持呈现到指定的位图。
/// </summary>
public static Bitmap DrawToBitmap(Control control, Bitmap bitmap, Rectangle targetBounds)
if (bitmap == null)
throw new ArgumentNullException("bitmap");
if (((targetBounds.Width <= 0) || (targetBounds.Height <= 0)) || ((targetBounds.X < 0) || (targetBounds.Y < 0)))
throw new ArgumentException("targetBounds");
Bitmap image = new Bitmap(control.Width, control.Height, bitmap.PixelFormat);
using (Graphics graphics = Graphics.FromImage(image))
IntPtr hdc = graphics.GetHdc();
SendMessage(new HandleRef(control, control.Handle), 0x317, hdc, (IntPtr)30);
using (Graphics graphics2 = Graphics.FromImage(bitmap))
IntPtr handle = graphics2.GetHdc();
BitBlt(new HandleRef(graphics2, handle), 0, 0, control.Width, control.Height, new HandleRef(graphics, hdc), targetBounds.X, targetBounds.Y,
0xcc0020);
graphics2.ReleaseHdcInternal(handle);
graphics.ReleaseHdcInternal(hdc);
return image;
本回答被提问者和网友采纳
VS2012 C#设计程序界面时以下这种按钮怎么添加
这种按钮在一块的怎么添加
将这四个图片保存在本地,分别作为四个按钮的背景图即可 参考技术A ToolStrip控件会有图片和文字选项 参考技术B 自己用自定义控件做一个按钮就可以了.. 参考技术C 这好像是一个控件,可以设置图片和文字的,以上是关于C#怎么让一个程序的界面的图片下保存下来的主要内容,如果未能解决你的问题,请参考以下文章