Visual Studio 2008 SP1 C#WindowsアプリケーションOnPaintが正しく描画されない
メインフォームに直接書き込んで描画していますが、画面の再描画に問題があります。プログラムの起動時に、画面が正しくペイントされます。さらに2つのペイントメッセージが3〜4秒後に続きます(アクションやモーションは画面に表示されません)。スクリーンはクライアント座標の代わりにスクリーン座標を使用して描画されます。元の文字列は消去されません。
問題を最も簡単な形にするために、私は新しいC#Windowsアプリケーションを開始しました。メインフォームに文字列を描画する以外は何もしません。 (下記のコードをご覧ください)プログラムを起動すると文字列が表示され、2番目の文字列が上と下に表示されます。プログラムを再起動してフォームを画面の左上隅に移動すると、2つの文字列がほぼ一致します。このため、第2のペイントがスクリーン座標を使用していると思います。
コードはありますか?お手数ですが、あらかじめご了承ください。
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
}
}
}
独自のコードを使用する前に 'base.OnPaint(eventArgs) 'を呼び出すことを忘れないでください。 – FlyingStreudel
投稿されたコードスニペットはこの問題を再現できません。再塗りつぶしを行うために正確にあなたが何をしたかは、非常に不明です。 –