首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何画玫瑰花?

如何画玫瑰花?
EN

Stack Overflow用户
提问于 2013-05-07 03:22:19
回答 1查看 334关注 0票数 1

我期待着用c#图形制作一个玫瑰花...以下是我试图实现的目标:Rosette

到目前为止,我这样做了:

代码语言:javascript
复制
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个圆圈,但我只想展示中间包含玫瑰花的圆圈。如何去掉主循环外的那些多余的行..如果有人能给我几行代码,并向我展示如何做到这一点,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-07 04:01:00

从中心圆的矩形开始,并按一定的百分比进行膨胀()。接下来,创建一个GraphicsPath(),并通过AddEllipse()使用膨胀的矩形向其添加一个椭圆。最后,使用SetClip()裁剪图形表面。这将阻止显示该椭圆之外的任何内容:

代码语言:javascript
复制
        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();

这是我剪好的玫瑰花:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16405711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档