特色栏目

ASP源码

PHP源码

.NET源码

JSP源码

游戏频道
专题合集
关闭菜单
首页> C#/CSHARP教程> C#用自定义或指定颜色填充矩形

C#用自定义或指定颜色填充矩形

时间:2010-04-27 16:18:23 作者:互联网

用到某处要使用自定义颜色填充图像,貌似Gr***ics.FillRectangle方法只能用Brush来填充。但是常规Brush都是Brushes定义好的Brush,怎么办呢?

GOOGLE了下有两种方法:
一、用新SolidBrush填充
 

public void FillByColor(Rectangle rect,Color c,Graphics G){    G.***lRectangle(new SolidBrush(c), rect);}

 

参考文章:《如何:创建线性渐变》

 

二、用API实现指定颜色填充一个闭合区域(未测试)
用API实现指定颜色填充
using Sy***m.Runtime.InteropServices;[DllImport("gd***.dll")]public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj);[DllImport("gd***.dll")]public static extern IntPtr CreateSolidBrush(int crColor);[DllImport("gd***.dll")]public static extern bool ExtFloodFill(IntPtr hdc, int nXStart, int nYStart, int crColor, uint fuFillType);[DllImport("gd***.dll")]public static extern bool DeleteObject(IntPtr hObject);[DllImport("gd***.dll")]public static extern int GetPixel(IntPtr hdc, int x, int y);public static uint FLOODFILLBORDER = 0;public static uint FLOODFILLSURFACE = 1;private void button1_Click(object sender, EventArgs e){    Graphics vGraphics = Gr***ics.FromHwnd(Handle);    vG***hics.DrawRectangle(Pe***Blue, new Rectangle(0, 0, 300, 300));    vG***hics.DrawRectangle(Pe***Blue, new Rectangle(50, 70, 300, 300));    IntPtr vDC = vG***hics.GetHdc();    IntPtr vBrush = CreateSolidBrush(Co***Translator.ToWin32(Co***.Red));    IntPtr vPreviouseBrush = SelectObject(vDC, vBrush);    ExtFloodFill(vDC, 10, 10, GetPixel(vDC, 10, 10), FLOODFILLSURFACE);    SelectObject(vDC, vPreviouseBrush);    DeleteObject(vBrush);    vG***hics.ReleaseHdc(vDC);}
 

参考文章:http://www.csharpwin.com/csharpspace/9115r3566.shtml
 

 

(本文来源:http://www.cnblogs.com/allanswolf/archive/2010/04/22/1718217.html)

 

相关文章

相关应用

热门文章

猜你喜欢

返回顶部