C#关于画图GraphicsBitmapimage[操作系统入门]
关于GDI+
的使用,就对点,线,面的画的操作,图像剪裁,缩放等等操作,了解各种常用的方法和属性。
style="font-size: 10pt;">常用命名空间:System.Drawing;System.Drawing.Image; id="nsrTitle">System.Drawing.Drawing2D;
Graphics类封装了一个GDI+绘图图面,提供将对象绘制到显示到设备的方法。 style="font-size: 10pt;"> style="font-size: 10pt;">Graphics叫画板,只不过这个画板中带了很多工具。但画图时你要定义画板的大小,颜色等等,还应给他一张画纸;
Graphics
style="font-size: 10pt;">1.创建Graphics基本方法:
style="font-size: 10pt;"> style="font-size: 10pt;"> Graphics g = this.CreateGraphics();
style="font-size: 10pt;"> style="font-size: 10pt;"> Graphics g = e;// Paint事件中的
style="font-size: 10pt;"> style="font-size: 10pt;"> Graphics g = Graphics.FromImage();//Graphics.Fromxx类的各种静态方法。
style="font-size: 10pt;"> style="font-size: 10pt;">谁创建Graphics对象,就在谁上画。
style="font-size: 10pt;"> style="font-size: 10pt;">2.画的方法:
style="font-size: 10pt;"> style="font-size: 10pt;"> g.Drawxx 的各种方法。
style="font-size: 10pt;"> style="font-size: 10pt;">3.Graphics用的 画笔和画刷
style="font-size: 10pt;"> style="font-size: 10pt;"> pen 和 style="font-size: 12px;">Font
style="font-size: 10pt;"> style="font-size: 10pt;"> style="font-size: 12px;"> pen.PenType //属性
style="font-size: 10pt;"> style="font-size: 10pt;"> style="font-size: 12px;"> pen.DashStyle
style="font-size: 10pt;"> style="font-size: 10pt;"> style="font-size: 12px;"> Font f = new Font( "宋体", 15, FontStyle.Bold | FontStyle.Italic );
style="font-size: 10pt;"> style="font-size: 10pt;"> Brush //画刷
style="font-size: 10pt;"> style="font-size: 10pt;"> 派生类:
style="font-size: 10pt;"> style="font-size: 10pt;"> LinearGradientBrush//渐变画刷
style="font-size: 10pt;"> style="font-size: 10pt;"> SolidBrush//单色画刷
style="font-size: 10pt;"> style="font-size: 10pt;"> HatchBrush //用阴影样式 (机械制图时用的多)
style="font-size: 10pt;"> style="font-size: 10pt;"> TextureBrush//画字
style="font-size: 10pt;"> style="font-size: 10pt;"> class="identifier"> ImageBrush//图片画刷
style="font-size: 10pt;"> style="font-size: 10pt;"> class="identifier"> VisualBrush//
style="font-size: 10pt;"> style="font-size: 10pt;"> class="identifier"> RadialGradientBrush
style="font-size: 10pt;"> style="font-size: 10pt;"> class="identifier"> DrawingBrush
style="font-size: 12px;"> 4.图片处理
style="font-size: 12px;"> 1. Graphics.SmoothingMode style="font-size: 12px;"> 2. style="color: red;">Graphics.InterpolationMode style="font-size: 12px;"> 3. Graphics.CompositingQuality style="color: red;">
5.
clear()方法:
Graphics g.clear(Color.Blue);// 不是清除xx颜色,是清除背景并设置xx颜色。
Bitmap ,image 和
Icon
Bitmap bmp = new Bitmap(16, 16);
Bitmap bmp1 =
Bitmap.FromHbitmap(bmp.GetHbitmap());
Image
image =
Image.FromFile(@"C: emp.jpg");
bmp.MakeTransparent(Color.FromArgb(255, 0, 255));//把xx颜色设置透明色
style="font-size: 12px;"> for (int i = 0; i < bmp.Width; i++) { for (int j = 0; j < bmp.Height; j++) { (bmp.GetPixel(i, j) == Color.Blue)//获取像素设置 { bmp.SetPixel(i, j, Color.Red); } } }
if
ImageAttributes imageAttr = new
ImageAttributes();//通过位图和图元文件颜色的信息设置颜色 style="color: rgb(0, 0, 0);"> e.Graphics.DrawImage(Image, rect, 0, 0, 100, 100, GraphicsUnit.Pixel, imageAttr);
imageAttr.SetColorKey(lowerColor,upperColor, ColorAdjustType.Default);
style="color: rgb(0, 0, 0);"> Stream IconStream = System.IO.File.OpenWrite(fileName); Bitmap(pbImage.Image); icon = System.Drawing.Icon.FromHandle(bitmap.GetHicon());
Bitmap bitmap = new
bitmap.SetResolution(32, 32);
Icon
icon.Save(IconStream);//比bitmap.save格式强点
其他常用:
Clipboard.SetDataObject(this.pbSource.Image);//截图
IDataObject
data =
Clipboard.GetDataObject();
if
(data.GetDataPresent(DataFormats.Bitmap))
image
= (Bitmap)data.GetData(DataFormats.Bitmap);
Color c = KnownColor.Control;
Color
c = Color.FromArgb(128,
Color.Blue); //128为半透明颜色
this.Opacity = 0.5//窗体的透明度
style="font-size: 12px;"> System.Drawing.Drawing2D 命名空间下 class="identifier">GraphicsPath
//创建矢量图
Bitmap bmp = new
Bitmap(220,220);
Graphics g =
Graphics.FromImage(bmp);
Metafile
mf = new
Metafile(filePath,g.GetHdc());
//画图...
g.Save();
g.Dispose();
mf.Dispose();
防止图片闪烁,双缓冲设置
SetStyle(ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.ResizeRedraw
|
ControlStyles.SupportsTransparentBackColor, true);
尽量不要用窗体TransparencyKey否则闪烁和卡顿会使用闪烁更严重。
不要在Paint事件给各种 xx.Image 赋值,xx.Image会调用paint这样会死循环。
图像的各种效果(底片、浮雕、黑白、滤镜)只是算法问题。
C# 关于画图Graphics Bitmap image
原文:http://www.cnblogs.com/bjchaofan/p/3511965.html
以上是 C#关于画图GraphicsBitmapimage[操作系统入门] 的全部内容, 来源链接: utcz.com/z/515927.html