我用DrawBezier画了一个封闭的不规则图形(边有弧度的),想要用一种颜色填充进去,想不到好办法,高手麻烦指点下~具体:如这个月亮:
我想给它填充成黄色:
这该怎么办?用c#来编,填充颜色。另一个问题:
还是这个月亮,假设里面有些杂线条(线条颜色已知),如:
我要像上面一样填成纯黄的:
我想的办法是一种颜色一种颜色的去:>>>>>>>>>>>>>>>>>>>>
这样字行不行,(有简单的更好~)程序该怎么写(要用到哪些类和方法?)希望:上面两个问题的代码+解释;(c#的)有编好的程序更好,参考一下~
谢谢!
我想给它填充成黄色:
这该怎么办?用c#来编,填充颜色。另一个问题:
还是这个月亮,假设里面有些杂线条(线条颜色已知),如:
我要像上面一样填成纯黄的:
我想的办法是一种颜色一种颜色的去:>>>>>>>>>>>>>>>>>>>>
这样字行不行,(有简单的更好~)程序该怎么写(要用到哪些类和方法?)希望:上面两个问题的代码+解释;(c#的)有编好的程序更好,参考一下~
谢谢!
Graphics.FillPath
Graphics.FillPath 有关于这两个方法的类怎么声明,怎么使用的实例也行(有效果演示更好)!麻烦代码粘上来看一下~谢谢~
你的第二个问题也很简单。 假设你原图bt1
你在创建一个一样大的图bt2
然后通过GraphicsPath 将颜色放在bt2上。 然后将 bt1上所有 白色 透明度变为0然后将bt1放在 bt2上。
over
using System.Drawing;GraphicsPath gpp = new GraphicsPath();
Point pt1 = new Point(0, 0);
Point pt2 = new Point(0, 10);
Point pt3 = new Point(10, 10);
Point pt4 = new Point(10, 0);
gpp.AddBeziers(new System.Drawing.PointF[] { pt1, pt2, pt3, pt4 });
Graphics gp = new Graphics();
gp.FillPath(Brushes.Blue, gpp);
我没有经过试验,具体应该不行,你可以参考msdn,上面说的很详细。
GraphicsPath dsd;
Graphics gp;
bool ssss = false;
private void button2_Click(object sender, EventArgs e)
{ Point pt1 = new Point(10, 50);
Point pt2 = new Point(50, 30);
Point pt3 = new Point(50, 120);
Point pt4 = new Point(10, 90);
Point cc2 = new Point(80, 150);
Point cc1 = new Point(80, 0); dsd = new GraphicsPath();
dsd.AddBezier( pt1, pt2, pt3, pt4);
dsd.AddBezier( pt1,cc1,cc2, pt4 );
ssss = true;
}
protected override void OnPaint(PaintEventArgs e)
{
Pen reds = new Pen(Color.Red , 2);
Brush dsds = Brushes.Yellow ;
base.OnPaint(e);
gp = e.Graphics;
gp.Clear(Color.White);
if (ssss)
{
gp.DrawPath(reds, dsd);
gp.FillPath(dsds, dsd);
} }
问题出在哪?
用
AddBeziers (开始点,控制点1,控制点2,节点1,控制点3,控制点4,节点2,控制点5,控制点6,...... ,终点(和开始点相同的话连接))没问题了~