文章目录
- 一、使用系统的枚举
- 二、专用枚举
- 1、颜色Color
- 2、字体Font
- 3、字体名称
- 4、笔刷Brush
- 5、笔Pen
- 6、矩形Rectangle
- 7、点Point
- 8、大小Size
文章出处: https://blog.csdn.net/haigear/article/details/129085403
在绘图中,常常需要给出颜色,字体,字体样式,笔刷,矩形,点等,每次如果都使用new来创建一个新的实在太费事实力,而且个人感觉没有太大的必要,尤其是在对这些要求不那么需要个性化的时候,或者测试的时候,所以我们就要知道如何快速的获取他们。
一、使用系统的枚举
第一个思路就是用“官家”的,他们也要绘图,所以他们自己肯定有一套现成的参数枚举。所以它们都是以系统开始的。
系统枚举往往只能提供系统需要的典型类型,标题,边框,控件背景等等,也就是说系统提供的这些专供系统界面使用的色彩样式几笔刷都相对比较单调。那么如何又获得比较丰富而且快捷的笔刷色彩和矩形大小点这些参数呢?可以用专用枚举。
二、专用枚举
1、颜色Color
color系统已经提供了专用的枚举,当我们需要特别有个性的颜色的时候,我们就通过new color 来构造定制。
利用Color枚举,直接调用典型颜色:
Color.Blue
还有一个比较意外的地方,其实是可以通过Pens的枚举来解决,通过画笔枚举的颜色属性获取颜色:
Pens.Blue.Color
比如我们的笔刷要用颜色参数了,我们可以这样来:
Brush bsh=new SolidBrush(Pens.Pink.Color);
当然,我们的Bushes枚举里面本来就有自带的颜色,但brushes中的颜色是不可以取出来的,只有Pens枚举中的颜色可以通过color属性获取。
2、字体Font
快速获取字体。它没有专用的枚举,有两个个办法,第一就是前面说的系统字体。
SystemFonts.CaptionFont!
第二个办法就使用控件和窗体字体:
this.Font//窗体字体
this.button1.Font//控件字体
gp.DrawString("hello", this.Font, Brushes.Black, new PointF(100,100));
3、字体名称
顺便补充一下,如何获取字体名称,我们大多数人是不记得字体名称的(可能你记得“宋体”和“Arial”)。使用FontFamily.Name
this.Font.FontFamily.Name
new Font(this.Font.FontFamily.Name,5)
4、笔刷Brush
笔刷的实例化说起来是最麻烦的,因为brush是抽象类,我们初始化的时候一般用SolidBrush来初始化,如:
Brush brsh = new SolidBrush(Color.Blue);
那么,如何快速获得呢?其实Brush是以后专业有的枚举的,Brushes,比如我们要填充一个圆,直接:
gp.FillEllipse(Brushes.Blue, new Rectangle(100,100,200,200));
这里,我们就直接使用Brushes枚举获得了笔刷,而且颜色也一并获得了。对于我们没有颜色定制要求的测试来说足够了。
5、笔Pen
pen的枚举专用枚举,直接
Pens.Red;
我们可以这样用
Graphics gp = e.Graphics;
gp.DrawEllipse(Pens.Red, new Rectangle(100,100,200,200));
6、矩形Rectangle
其实我们如果仅仅是需要一个矩形来作测试的话,那么我们获得矩形的方法快捷方法还是有的,比如:
this.ClientRectangle;
this.pictureBox1.ClientRectangle
Rectangle rect= this.ClientRectangle;
rect.Inflate(-100, -100);
上面我们通过了Inflate的方法对获取的矩形进行大小调节,但比较麻烦,需要两步来完成。
其实,Inflate还有一个静态方法很好用:
dc.DrawRectangle(Pens.Red, Rectangle.Inflate(this.ClientRectangle,-100,-100));
总结下,有两点要注意的:
1、可以是任何控件的ClientRectangle,但需要注意的是,我们这样获取的矩形,都是和窗体及控件形状一样的,需要通过Rectangle的静态方法Inflate来调整一下大小最好。
2、这样获取的矩形的起始坐标默认的是在(0,0)点,需要通过Offset来设置一下位置。
7、点Point
关于这点,系统也没有它的特殊点的枚举,而且也貌似没有什么方法可以获取一个比较好的位置适合来测试,因为我们能获得的点貌似只有控件的location
this.pictureBox1.ClientRectangle.Location;
再配合矩形的offset方法移动到合适的位置,但这样是更麻烦,还不如直接自己new 一个新的点。
当然,这里其实有一个小小的技巧,我们完全可以利用控件的位置来绘图,方法就是把控件拖动到你想要的位置后隐藏起来,这样我们的绘图的起点就是控件的起点了。
8、大小Size
Size的获取也最好是从控件快速获取
Size sz=this.pictureBox1.Size;
用法小技巧和点相同,当我们的确要控制绘制图形的大小,那我们完全可以通过拖放控件的大小来控制。
码字不易,请注明出处:https://blog.csdn.net/haigear/article/details/129085403