我正在尝试使用 F# 脚本,我只想通过单击简单的按钮在空白 Windows 窗体上绘制线条。希望您能在这里看到我想做什么:
open System.Drawing
open System.Windows.Forms
let form = new Form(Width = 400, Height = 400, Text = "draw test")
let panel = new FlowLayoutPanel()
form.Controls.Add(panel)
let paint(e : PaintEventArgs) =
let pen = new Pen(Color.Black);
e.Graphics.DrawLine(pen, new PointF(100.0f, 100.0f), new PointF(200.0f, 200.0f))
let button = new Button()
button.Text <- "Click to draw"
button.AutoSize <- true
button.Click.Add(fun _ -> form.Paint.Add(paint)) // <- does not draw a line on click
panel.Controls.Add(button)
//form.Paint.Add(paint) <- here, if uncommented, it will draw a line when the script is run
form.Show()
如果我将 form.Paint.Add(paint)
取消在 form.Show()
上面的注释,那么它当然会在表单上绘制,但我我正在尝试通过单击按钮来完成此操作。我不太清楚如何在这样的脚本中实现这一点,并且我一直在 F# 中寻找类似的示例。任何帮助将不胜感激。
最佳答案
如果您在第一次绘制表单之前添加 Paint 事件处理程序,那么它将使用该处理程序进行绘制。
如果您在之后添加它,则需要确保表单随后自行重绘。例如,您可以对其调用 Refresh
或 Invalidate
。
例如:
button.Click.Add(fun _ -> form.Paint.Add(paint); form.Invalidate())
关于wpf - F# WPF 脚本,在按钮单击时绘制图形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49547361/