当前位置: 首页 > 编程语言 > C#

C#在面板上绘图分享

时间:2023-04-10 18:58:11 C#

C#在面板上绘图我在做一个日程表,用面板来表示时间段,约会更多的是面板。用户可以上下滚动,以便他们可以更早或更晚地查看范围。当约会在可见范围的末尾运行时,我想要一个锯齿形来表示约会超出了可见范围。我已经确定了发生这种情况的情况,我调用了私有函数drawZigZag(Panelp,intdirection);绘制它。日期水平展开,direction-1表示左边之字形,1表示右边之字形。到目前为止,我还没有达到之字形,我只是尝试使用CreateGraphics()和FillPolygon()。到目前为止我有:privatevoiddrawZigZag(Panelp,intdirection)//1=right,-1=left{Graphicsg=p.CreateGraphics();g.FillRectangle(newSolidBrush(Color.FromArgb(0,Color.Black)),p.DisplayRectangle);Point[]points=newPoint[4];点[0]=新点(0,0);points[1]=newPoint(0,p.Height);points[2]=newPoint(p.Width,p.Height);points[3]=newPoint(p.Width,0);画笔brush=newSolidBrush(Color.DarkGreen);g.FillPolygon(brush,points);我最初没有第一个FillRectangle()。我只是在FillPolygon()不起作用时才添加。基本上,它不起作用,我不知道为什么。面板是原来的颜色——它还没有被深绿色填充。我以前用CreateGraphics()做其他事情,我不确定为什么它在这种情况下不起作用。有任何想法吗?编辑:抱歉,我想我应该提一下:我的面板上有几个标签控件来描述约会。如果可能,不应涵盖这些内容。您需要从paint事件处理程序调用此方法,而不仅仅是您喜欢的那个。所以在你的构造函数中你可能有:panel1.Paint+=newPaintEventHandler(panel1_Paint);然后做:privatevoidpanel1_Paint(objectsender,PaintEventArgse){varp=senderasPanel;varg=e.Graphics;g.FillRectangle(newSolidBrush(Color.FromArgb(0,Color.Black)),p.DisplayRectangle);Point[]points=newPoint[4];点[0]=新点(0,0);points[1]=newPoint(0,p.Height);points[2]=newPoint(p.Width,p.Height);points[3]=newPoint(p.Width,0);画笔brush=newSolidBrush(Color.DarkGreen);g.FillPolygon(画笔,点);例如,我们有一个从textBox1中绘制文本的绘制事件:privatevoidpanel1_draw(objectsender,PaintEventArgse){varg=e.Graphics;Penmyp=newPen(System.Drawing.Color.Red,4);Fontfy=newFont("Helvetica",10,FontStyle.Bold);画笔br=newSolidBrush(System.Drawing.Color.Red);g.DrawString(textBox1.Text,fy,br,0,0);}要在panel1上绘画,您需要在按钮事件处理程序中编写此代码:privatevoidbutton1_Click(objectsender,EventArgse){panel1.Paint+=newPaintEventHandler(panel1_draw);panel1.Refresh();}第一行在面板中绘制文字,如果要显示文字,就要刷新面板主要是使用panel1.Pain+=newPaintEventHandler(yourvanityname);和面板1。刷新();以上就是C#学习教程:C#在面板上的绘制,分享全部内容。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: