C# GDI三种坐标系及颜色等常用结构

来源:互联网 发布:君子去仁 恶乎成名翻译 编辑:程序博客网 时间:2024/06/06 02:09

GDI+中三种坐标系统:

GDI+定义了三种坐标系统,并提供了三种坐标转换的方法Graphics.TransformPoints()。
  • 全局坐标系统。
  • 页面(Page)坐标系统:左上角为原点,横向x轴向右为正方向,纵向y轴向下为正方向。单位为像素。这是默认的坐标系统。
  • 设备坐标系统:可以指定特定测量单位的页面(Page)坐标系统。如果单位为像素,和页面(Page)坐标系统相同。

GDI+中常用的结构

本节介绍GDI+中常用的结构,包括:Point、PointF、Size、SizeF、Rectangle、RectangleF、Color等。它们都在名字空间System.Drawing中定义的。

  • 结构Point和PointF

点结构有两个成员:X,Y,表示点的x轴和y轴的坐标。其常用构造函数如下:
    • Point p1=new Point(int X,int Y);//X,Y为整数
    • PointF p2=new PointF(float X,floa Y);//X,Y为浮点数
  • 结构Size和SizeF

Size和SizeF用来表示尺寸大小,有两个成员:Width和Height。常用构造函数如下:
    • public Size(int width,int height);
    • public SizeF(float width,float height);
  • 结构Rectangle和RectangleF

结构Rectangle和RectangleF用来表示一个矩形,常用属性如下:
    • Top:Rectangle结构左上角的y坐标。
    • Left:Rectangle结构左上角的x坐标。
    • Bottom:Rectangle结构右下角的y坐标。
    • Right:Rectangle结构右下角的x坐标。
    • Width:获取或设置此Rectangle结构的宽度。
    • Height:获取或设置此Rectangle结构的高度。
    • Size:获取或设置此Rectangle的大小。
    • X:获取或设置此Rectangle结构左上角的x坐标。
    • Y:获取或设置此Rectangle结构左上角的y坐标。
其常用构造函数为:
  • //参数为矩形左上角坐标的点结构location和代表矩形宽和高的Size结构size
Rectangle(Point location,Size size);//参数也可为PointF和SizeF


  • //参数为矩形左上角x和y坐标,宽,高

Rectangle(int X,int Y,int width,int height);//X和Y也可为float

  • 结构Color

Color结构表示颜色,结构中包含一个无符号32位数代表颜色。任何一种颜色可以用透明度(al),,红色(rr),绿色(gg),蓝色(bb)合成,格式为0xalrrggbb,其中al,rr,gg,bb为0到255间的二进制数。常用方法如下:
    • public static Color FromArgb(int alpha,int rr,int gg,int bb);
从四个分量(透明度、红色、绿色和蓝色)值创建Color结构。每个分量的值仅限于8位(小于256)。alpha值表示透明度,=0为完全透明,=255为完全不透明
    •  public static Color FromArgb(int rr,int gg,int bb);
从指定的8位颜色值(红色、绿色和蓝色)创建Color结构。透明度值默认为255(完全不透明)。每个分量的值仅限于8位(小于256)。红色为(255,0,0),绿色为(0,255,0),蓝色为(0,0,255)。
    • public static Color FromArgb(int alpha,Color color);

从指定的Color结构创建新Color结构,使用新指定的透明度值alpha。alpha值仅限于8位。

  • 透明度及颜色的使用方法的例子如下:

private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{  Graphics g=e.Graphics;
SolidBrush RedBrush=new SolidBrush(Color.FromArgb(128,255,0,0));//半透明
SolidBrush GreenBrush=new SolidBrush(Color.FromArgb(128,0,255,0));

SolidBrush BlueBrush=new SolidBrush(Color.FromArgb(128,0,0,255));

g.FillRectangle(RedBrush,0,0,80,80);

g.FillRectangle(GreenBrush,40,0,80,80);
g.FillRectangle(BlueBrush,20,20,80,80);
}

效果如右图,可以将透明度alpha值设为255,再运行一次,看看有何不同。

C#中还预定义了一些颜色常数,例如黑色为Color.Black,红色为Color.Red等等,可用帮助察看。

0 0
原创粉丝点击