当前位置:  编程技术>.net/c#/asp.net

C# 在屏幕上画图效果的经典例子

    来源: 互联网  发布时间:2014-08-30

    本文导语:  C#实现在屏幕上画图的效果。   //DllImport所在的名字空间 using System.Runtime.InteropServices; [DllImport("User32.dll")] public extern static System.IntPtr GetDC(System.IntPtr hWnd); private void button19_Click(object sender, EventArgs e) { System.IntPtr DesktopHandle = Get...

C#实现在屏幕上画图的效果。
 

//DllImport所在的名字空间
using System.Runtime.InteropServices;
[DllImport("User32.dll")]
public extern static System.IntPtr GetDC(System.IntPtr hWnd);
private void button19_Click(object sender, EventArgs e)
{
System.IntPtr DesktopHandle = GetDC(System.IntPtr.Zero);
Graphics g = Graphics.FromHdc(DesktopHandle);
g.DrawRectangle(new Pen(Color.Red),new Rectangle(10,10,100,100));
}

附,c#画图的经典小例子

1.位图上绘制点和线
 

System.Drawing.Image MyImage=new System.Drawing.Bitmap (w,h);//申请位图对象
System.Drawing.Graphics g=System.Drawing.Graphics.FromImage(MyImage); //申请画图对象
//用白色C清出除
Color C=Color.FromArgb(255,255,255);
g.Clear(C);
 
//画线
g.DrawLine(Pens.Black,x1,y1,x2,y2);
//画一个象素的点
//MyBitmap.SetPixel(x, y, Color.White);

g.DrawImage(MyImage,0,0,h,w); //pictureBox1在(0,0)到(h,w)范围画点
pictureBox1.Image=MyImage;     //这个图片贴到pictureBox1控件上

2.在窗体上绘制图形
 

System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red);//画笔
System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Red);//画刷
System.Drawing.Graphics formGraphics = this.CreateGraphics();
formGraphics.FillEllipse(myBrush, new Rectangle(0,0,100,200));//画实心椭圆
formGraphics.DrawEllipse(myPen, new Rectangle(0,0,100,200));//空心圆
formGraphics.FillRectangle(myBrush, new Rectangle(0,0,100,200));//画实心方
formGraphics.DrawRectangle(myPen, new Rectangle(0,0,100,200));//空心矩形
formGraphics.DrawLine(myPen, 0, 0, 200, 200);//画线
formGraphics.DrawPie(myPen,90,80,140,40,120,100); //画馅饼图形
//画多边形
formGraphics.DrawPolygon(myPen,new Point[]{ new Point(30,140), new Point(270,250), new Point(110,240), new Point

(200,170), new Point(70,350), new Point(50,200)});  
//清理使用的资源
myPen.Dispose();
myBrush.Dispose();
formGraphics.Dispose();

3.在窗体上绘制文本
 

//在窗体上绘制竖向文本
System.Drawing.Graphics formGraphics = this.CreateGraphics();
string drawString = "Text";
System.Drawing.Font drawFont = new System.Drawing.Font("Arial", 16);
System.Drawing.SolidBrush drawBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
float x = 150.0f;
float y = 50.0f;
System.Drawing.StringFormat drawFormat = new System.Drawing.StringFormat(StringFormatFlags.DirectionVertical);//文本

//垂直
formGraphics.DrawString(drawString, drawFont, drawBrush, x, y);//绘制文本
formGraphics.DrawString(drawString, drawFont, drawBrush, x, y, drawFormat);//绘制垂直文本

//清理使用的资源
drawFont.Dispose();
drawBrush.Dispose();
formGraphics.Dispose();

4.其他画笔
 

//该画刷的HatchStyle有DiagonalCross、 ForwardDiagonal、Horizontal、 Vertical、 Solid等不同风格
HatchStyle hs = HatchStyle.Cross; //十字
HatchBrush sb = new HatchBrush(hs,Color.Blue,Color.Red);
g.FillRectangle(sb,50,50,150,150);

Rectangle r = new Rectangle(500, 300, 100, 100);
LinearGradientBrush lb = new LinearGradientBrush(r, Color.Red, Color.Yellow, LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lb, r);
//PathGradientBrush路径渐变,LinearGradientBrush线性渐变

Image bgimage = new Bitmap("E:2065215396.jpg");
brush = new TextureBrush(bgimage); //易一幅图作椭圆的背景
g.FillEllipse(brush,50,50,500,300);

5.其他技巧
 

代码示例:

//申请画图区域
System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(100, 100, 200, 200);
//创建笔
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Black);
myPen.DashStyle=DashStyle.Dash //DashStyle有Dash、DashDot、DashDotDot、Dot、Solid等风格
//创建单色画刷
System.Drawing.SolidBrush myBrush = new System.Drawing.SolidBrush(System.Drawing.Color.Black);
//画图函数
protected override void OnPaint ( System.Windows.Forms.PaintEventArgs e )  
{
}
//颜色对话框
ColorDialog c = new ColorDialog();
c.ShowDialog();
textBox1.BackColor = c.Color;
//字体对话框
FontDialog f = new FontDialog();
f.ShowDialog();
textBox1.Font   = flg.Font;

//RGB的使用
int Red=(int)SelfPlaceKey.GetValue("Red");
int Green=(int)SelfPlaceKey.GetValue("Green");
int Blue=(int)SelfPlaceKey.GetValue("Blue");
BackColor=Color.FromArgb(Red,Green,Blue);

//字体
Font aFont=new Font("Arial",16,FontStyle.Bold|FontStyle.Italic);
rect=new Rectangle(0,y,400,aFont.Height);
g.DrawRectangle(Pens.Blue,rect);
StringFormat sf=new StringFormat();
sf.Alignment=StringAlignment.Far;
g.DrawString("This text is right justified.",aFont,Brushes.Blue,rect,sf);
y+=aFont.Height+20;
aFont.Dispose();


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android获取屏幕方向及键盘状态的小例子
  • 怎样查看gcc输出到屏幕的完整信息(屏幕已滚动)?
  • Android点亮屏幕或屏幕解锁和锁定以及其他相关权限实现代码
  • 显卡tnt2,显示器ctx15寸纯屏,xconfig也成功但显示屏幕很大,超出了实际屏幕,其中配置时虚拟桌面不比实际桌面大,,why??
  • 如何将一个Dialog置于屏幕的中心?或者如何指定其出现在屏幕上的位置?
  • 屏幕录制软件 SimpleScreenRecorder
  • solaris 屏幕保护问题(Screen saver)!
  • 屏幕捕捉程序 HotShots
  • 关于SCO的屏幕保护的问题
  • 控制台分屏幕输出问题
  • 做了一个窗口,如何让它在启动的时候,显示在屏幕正中。(不管屏幕的大小和分辨率)
  • 屏幕截图软件 Shutter
  • 屏幕摄像工具 CamStudio
  • vncviewer看不到被控linux主机屏幕
  • CentOS 5.5 屏保锁屏幕后无法恢复,一片漆黑?
  • 屏幕抓取API的Java库程序 JxCapture
  • 屏幕截图程序 JShot
  • 请问有没有redhat屏幕录制工具?
  • 屏幕连续输出的时候,怎么切换进程?
  • 解决jQuery动态获取手机屏幕高和宽的问题
  • 屏幕保护程序 Kannasaver


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3