无法在c#中的formload上绘制椭圆当我执行下面的代码时,我看到我的省略号半秒钟,然后我就再也看不到它们了。当我点击我的图片框时,我可以画一个椭圆,但是当我最小化表格时,它们就不再出现了。我读到您不应该将绘图代码放在表单加载中,而应该放在OnPaint方法中,我就是这样做的。我不知道该怎么办了。谢谢。(请注意,我在其中留下了一些代码来展示我的尝试)。publicpartialclassFormParterre:Form{Graphicsg;浮动圆圈大小=15;//Brushesrouge=newBrushes(Brushes.Red);ReservationBilletSiegeDAOreservationBilletSiegeDAO=newReservationBilletSiegeDAO();SiegeDAOsiegeDAO=newSiegeDAO();列出围攻;列出rbs;ReservationBilletreservationBillet=newReservationBillet();ReservationBilletSiegereservationBilletSiege;SolidBrushsemiTransBrush;publicFormParterre(){InitializeComponent();pictureBox1.Image=newBitmap("./parterre.png");g=pictureBox1.CreateGraphics();}publicFormParterre(ReservationBilletrb){reservationBillet=rb;pictureBox1.Image=newBitmap("./parterre.png");g=pictureBox1.CreateGraphics();初始化组件();}protectedoverridevoidOnPaintBackground(PaintEventArgse){//什么都不做!防止闪烁}protectedoverridevoidOnPaint(PaintEventArgse){sieges=siegeDAO.readAll();rbs=reservationBilletSiegeDAO.readAll();foreach(ReservationBilletSiegereservationBilletSiegeTMPinrbs){Console.WriteLine(reservationBilletSiegeTMP.toString());intx=siegeDAO.read(reservationBilletSiegeTMP.idSiege).xValeur;inty=siegeDAO.read(reservationBilletSiegeTMP.idSiege).yValeur;浮动xx=(浮动)x;浮动yy=(浮动)y;Console.WriteLine("lex:"+xx);Console.WriteLine("ley:"+yy);/*e.Graphics.FillRectangle(newSolidBrush(BackColor),e.ClipRectangle);*/g.FillEllipse(newSolidBrush(Color.FromArgb(128,0,0,255)),xx-circleSize/2,yy-circleSize/2,circleSize,circleSize);}}privatevoidpictureBox1_Click(objectsender,EventArgse){MouseEventArgsme=(MouseEventArgs)e;txtX.Text=me.X.ToString();txtY.Text=me.Y.ToString();Console.WriteLine("点击");g.FillEllipse(newSolidBrush(Color.FromArgb(128,0,0,255)),float.Parse(txtX.Text)-circleSize/2,float.Parse(txtY.Text)-circleSize/2,circleSize,circleSize);}privatevoidFormParterre_Shown(objectsender,EventArgse){}privatevoidFormParterre_Load(objectsender,EventArgse){/*sieges=siegeDAO.readAll();//semiTransBrush=newSolidBrush(Color.FromArgb(128,0,0,255));rbs=reservationBilletSiegeDAO.readAll();foreach(ReservationBilletSiegereservationBilletSiegeTMPinrbs){Console.WriteLine(reservationBilletSiegeTMP.toString());intx=siegeDAO.read(reservationBilletSiegeTMP.idSiege).xValeur;yValeur;浮动xx=(浮动)x;浮动yy=(浮动)y;Console.WriteLine("lex:"+xx);Console.WriteLine("ley:"+yy);g.FillEllipse(newSolidBrush(Color.FromArgb(128,0,0,255)),xx-circleSize/2,yy-circleSize/2,circleSize,circleSize);}*/}}你需要使用在OnPaint中传递给你的PaintEventArgs.Graphics属性如果你想在PictureBox上绘画,你可以尝试订阅它的Paint事件并在那里绘画。这对我有用:以上是C#学习教程:Unabletodrawanellipseonformloadinginc#全部内容分享,如果对大家有用,需要详细了解C#学习教程,希望大家点赞更多关注—publicvoidForm1(){InitializeComponent();pictureBox1.Paint+=pictureBox1_Paint;}privatevoidpictureBox1_Paint(objectsender,PaintEventArgse){e.Graphics.FillEllipse(Brushes.Red,pictureBox1.ClientRectangle);如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
