我正在使用Windows Forms for Visual Studio学习C#和图形编程,并且遇到了一个问题,其中调用DrawEllipse并传递窗口大小的矩形会导致椭圆超出右侧窗口的范围和底面。
以下是绘制椭圆的代码:
class Screen extends StatefulWidget{
@override
State<StatefulWidget> createState() => ScreenState();
}
class ScreenState extends State<Screen>{
BuildContext context;
@override
Widget build(BuildContext context) => Scaffold(
floatingactionButton: FloatingactionButton(
onpressed: action,),body: Builder(
builder : (BuildContext context){
this.context = context;
return Container();
}
)
);
action() => Scaffold.of(context).showsnackBar(snackBar(
duration: Duration(milliseconds : 1000),content: Container(height: 10)
behavior: snackBarBehavior.floating,// Add this line
));
}
此代码运行时,将产生以下结果: Ellipse drawn in window
我已经尝试过在Form1_Load函数中设置窗口大小,但没有任何改变。
我在某些时候应该改变一些财产吗?我发现很难相信 private void Form1_Paint(object sender,PaintEventArgs e)
{
e.Graphics.Clear(Color.FromArgb(0,40));
e.Graphics.DrawEllipse(new Pen(Color.FromArgb(0,150,0)),new Rectangle(0,this.Width,this.Height));
}
和this.Width
与窗口的尺寸实际上不匹配。有人遇到过这个问题吗?