我期待着用c#图形制作一个玫瑰花...以下是我试图实现的目标:Rosette
到目前为止,我这样做了:
Pen lapsi = new Pen(Color.Black, 3);
Rectangle katrori = new Rectangle(250, 200, 200, 200);
Rectangle katrori2 = new Rectangle(350, 200, 200, 200);
Rectangle katrori3 = new Rectangle(150, 200, 200, 200);
Rectangle katrori4 = new Rectangle(200, 110, 200, 200);
Rectangle katrori5 = new Rectangle(200, 285, 200, 200);
Rectangle katrori6 = new Rectangle(295, 110, 200, 200);
Rectangle katrori7 = new Rectangle(300, 282, 200, 200);
Graphics g = this.CreateGraphics();
g.DrawEllipse(lapsi, katrori); //kryesor
g.DrawEllipse(lapsi, katrori2); //djatht
g.DrawEllipse(lapsi, katrori3); //majt
g.DrawEllipse(lapsi, katrori4); //nalt-majt
g.DrawEllipse(lapsi, katrori5); //posht-majt
g.DrawEllipse(lapsi, katrori6); //nalt-djatht
g.DrawEllipse(lapsi, katrori7);//posht djatht到目前为止,我已经画了7个圆圈,但我只想展示中间包含玫瑰花的圆圈。如何去掉主循环外的那些多余的行..如果有人能给我几行代码,并向我展示如何做到这一点,我将不胜感激。
发布于 2013-05-07 04:01:00
从中心圆的矩形开始,并按一定的百分比进行膨胀()。接下来,创建一个GraphicsPath(),并通过AddEllipse()使用膨胀的矩形向其添加一个椭圆。最后,使用SetClip()裁剪图形表面。这将阻止显示该椭圆之外的任何内容:
Pen lapsi = new Pen(Color.Black, 3);
Rectangle katrori = new Rectangle(250, 200, 200, 200);
Rectangle katrori2 = new Rectangle(350, 200, 200, 200);
Rectangle katrori3 = new Rectangle(150, 200, 200, 200);
Rectangle katrori4 = new Rectangle(200, 110, 200, 200);
Rectangle katrori5 = new Rectangle(200, 285, 200, 200);
Rectangle katrori6 = new Rectangle(295, 110, 200, 200);
Rectangle katrori7 = new Rectangle(300, 282, 200, 200);
Graphics g = this.CreateGraphics();
Rectangle clippingRectangle = new Rectangle(katrori.Location, katrori.Size);
clippingRectangle.Inflate((int)(katrori.Width * .2), (int)(katrori.Width * .2));
System.Drawing.Drawing2D.GraphicsPath GP = new System.Drawing.Drawing2D.GraphicsPath();
GP.AddEllipse(clippingRectangle);
g.SetClip(GP);
g.DrawEllipse(lapsi, katrori); //kryesor
g.DrawEllipse(lapsi, katrori2); //djatht
g.DrawEllipse(lapsi, katrori3); //majt
g.DrawEllipse(lapsi, katrori4); //nalt-majt
g.DrawEllipse(lapsi, katrori5); //posht-majt
g.DrawEllipse(lapsi, katrori6); //nalt-djatht
g.DrawEllipse(lapsi, katrori7);//posht djatht
g.Dispose();这是我剪好的玫瑰花:

https://stackoverflow.com/questions/16405711
复制相似问题