我只是试图在不使用Visual Studio功能的情况下绘制某些形状,大多数教程都使用该形状,因此我有理由确保编码是不同的,因此,最后的要求是在这里提出。
遵循一些没有使用任何视觉工作室的表格指南(是的,我知道使用它会容易得多,但是过去使用这些东西已经使我感到困惑,所以想学习而不使用它)形状等,但是当涉及到实际绘制形状时,我碰壁了。
根据我的判断,我做了一些调试,该事件根本不会触发。主函数中的图形代码不执行任何操作,仅显示空白表格。 我在内部代码和事件代码上都尝试了几种变体,它们在代码中都是可见的,我还尝试使用事件的变体,该变体使用了“发送者”参数,不知道是否进行了更改,所不同的是,他们都没有开除。
using System;
using System.Windows.Forms;
using System.ComponentModel;
using System.Drawing;
using System.Workflow.ComponentModel;
class Genetics : Form
{
public static Form form1;
static void Main(string[] args)
{
form1 = new Form();
form1.Size = new Size(800, 800);
Pen blackpen = new Pen(Color.Black, 10);
Graphics G = form1.CreateGraphics();
G.DrawRectangle(blackpen, form1.Width - form1.Width / 2, form1.Width - form1.Width / 2, 300, 300);
form1.CreateGraphics().DrawRectangle(blackpen, form1.Width - form1.Width / 2, form1.Width - form1.Width / 2, 300, 300);
Application.Run(form1);
}
protected override void OnPaint(PaintEventArgs e)
{
Graphics graphics;
graphics = form1.CreateGraphics();
Pen mypen = new Pen(Color.Black, 5);
graphics.DrawLine(mypen, 20, 20, 200, 210);
e.Graphics.DrawRectangle(mypen, 20, 20, 200, 210);
}
}
我没有收到任何错误或任何内容,只是...除了显示表格之外,什么也不做,但这只是最低限度的一点。
我知道这很容易解决,但是同样,所有教程都使用Visual Studio表单,并且不确定代码是否不同。由于我已经尝试直接复制该代码并且它给了我错误,因此我认为我是正确的,但不是100%肯定。 而且我经验丰富,我习惯于统一编写,但是从那儿到纯代码的过程对我来说却很困难。
答案 0 :(得分:0)
就算我以外的人正在寻找这个东西,问题也有两点: 1,事件没有连接任何东西,所以我需要添加这样的一行:
[Form variable].[form event] += new PaintEventHandler([Class].[Method with an object sender and an event argument]
//Example of that
form1.Paint += new PaintEventHandler(Genetics.Paint);
否则,由于方法和事件未连接,因此不会发生任何事情。
2,主要是重复的注释,我需要在事件中具有所有绘制函数,因为在实际运行应用程序之前,它们没有任何绘制对象。然后,只需使这些事件中的代码无效,以强制重新绘制表单即可。