表格我到目前为止在程序中所做的工作,似乎在Winform上绘制任何内容的唯一方法是通过System.Windows.Forms.painteventargs。如果您无法访问这些参数或此名称空间,而只能访问Winform,那么如何在Winform上绘制(例如矩形)。

提前致谢。

有帮助吗?

解决方案

如果您想在外面绘制表格(或任何其他控件) Paint 活动,您必须得到 Graphics 该控件的对象。然后,您可以绘制自己内心的内容。但是,请注意,下次出现油漆消息时,您绘制的内容可能会被删除。

绘制表格:

using (Graphics g = this.CreateGraphics())
{
    // do all your drawing here
}

其他提示

Painteventargs是一堂课 在里面 system.windows.forms名称空间. 。如果您正在使用表单,则意味着您确实可以访问名称空间和类,但是您可能无法访问您正在尝试绘制的表单代码...

即使您无法访问表单的源代码,油漆事件也是公开的,也可以从表单外部的代码中注册处理程序。 (我猜这是您的问题。)

请参阅这个简单的示例类,该类别引用了一个表单,请用油漆处理程序进行注册,然后进行一些任意图纸。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1 {
    class Painter {
        public Painter(Form form) {
            form.Paint += new PaintEventHandler(form_Paint);
        }

        void form_Paint(object sender, PaintEventArgs e) {
            e.Graphics.DrawLine(Pens.Black, 0, 0, 20, 20);
        }
    }
}

该片段中的重要概念是,如果您对表单(或任何控制衍生的对象)进行引用,则可以在需要重新粉刷控件时自动调查的油漆事件(并且您可以绘制任何所需的内容)在该控件上。)

在片段中,我通过了构造函数中的表格,并在那里的油漆事件注册,但这只是一个快速的示例。您的代码的结构会有所不同,但是...您将有一个表单,并且将有一个初始化步骤,您可以在其中注册该事件,然后创建一种可以完成绘画的方法。

您可以通过创建和处置自己的图形对象来绘制其他方式,但这不是可取的方法。首先,当您需要重新绘制窗口时,您不会收到通知,并且需要创建其他重新绘制的机制,例如计时器(作为一个非常简单且丑陋的示例),您必须自己管理图形对象。

得到 通过订阅 Control.Paint 事件,然后在您订阅的事件处理程序中执行所有绘图。这将与相关 PaintEventArgs.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top