繁体   English   中英

在面板中绘制形状

[英]Drawing shapes in a panel

希望您能够帮助我。 我必须在面板上绘制一些形状,例如椭圆,圆形,正方形等。这是我的代码:

private void Form1_Load(object sender, EventArgs e)
{
    pnForm.BackColor = Color.White;
    Graphics g = pnForm.CreateGraphics();
    HatchBrush hb = new HatchBrush(HatchStyle.BackwardDiagonal, Color.Black, Color.White);

    if (rbQuadrat.Checked == true)
    {
       g.FillRectangle(hb, 10, 10, 50, 50);
    }
}

我设置了单选按钮以在形状之间进行选择,但是当我检查正方形时,面板上什么也没有出现。 我尝试了各种参数,例如pnForm.ClientRectangle.Width / Height,其他数字值等,但对我没有用。

PS。 它不是“ pnForm.Backcolor = Color.White”,我在没有此代码的情况下对其进行了测试,并且也不起作用。

编辑:我删除了if子句,现在它正在工作。 当我发现我的错误时让您知道。

从方法的名称来看,您的代码在表单加载时仅被调用一次。 Windows Forms / GDI是一种无状态的绘图体系结构。 如果复选框的值更改,它不知道应该重绘应用程序。

而是在此答案中做类似的事情,并确保在复选框状态更改时,使要渲染到的面板Invalidate()

不应使用Form_Load事件,而应编写radioButton_CheckedChanged代码。 因此,如果可以正确处理某些if语句,则可以在触发此事件时绘制矩形,正方形等。 例如:

private void radioButton1_CheckedChanged(sender, e) {
  if(radioButton1.Checked) {
      pnForm.Invalidate(); // or pnForm.Refresh();
      //Draw shape1
  }
}
private void radioButton2_CheckedChanged(sender, e) {
  if(radioButton2.Checked) {
     pnForm.Invalidate(); // or pnForm.Refresh();
     //Draw shape2
  }
}

等等。 希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM