Visual Studio 2008 SP1 C# Windows应用程序
我正在直接向主窗体写入和绘制,但在重新绘制屏幕时遇到了问题。在程序启动时,屏幕可以正确绘制。另外两个paint消息在3-4秒内出现(屏幕上没有动作或运动),屏幕使用屏幕坐标(我认为)而不是客户端坐标进行绘制。原始字符串不会被擦除。
为了将问题简化为最简单的形式,我启动了一个新的C# windows应用程序。它除了在主窗体上绘制一个字符串之外,什么也不做。(参见下面的代码片段)如果您启动程序,该字符串将出现,然后第二个字符串将出现在上方和左侧。如果重新启动程序并将窗体移到屏幕的左上角,两个字符串将几乎重合。这就是为什么我认为第二个画图使用了屏幕坐标。
以下是代码-提前感谢您能提供的任何帮助。
代码语言:javascript运行复制using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Junk
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs eventArgs)
{
using (Font myFont = new System.Drawing.Font("Helvetica", 40, FontStyle.Italic))
{
eventArgs.Graphics.TranslateTransform(0, 0);
Point p;
eventArgs.Graphics.DrawString("Hello C#", myFont, System.Drawing.Brushes.Red, 200, 200);
} //myFont is automatically disposed here, even if an exception was thrown
}
}
}