1

ペイントイベントで描画することで描画速度/時間を増やすことができ、それを使用してスケーリングなしで描画することもできると読みました。

だから私は自分のパネルでそれを試してみたいと思っています。

問題は、画像が別のスレッドで受信され、次に GUI で受信されることです。それをペイント イベントに渡す方法がわかりません。

私は実際に呼び出して何かをしたくありません(少なくとも私が使用したときは信じられないほど遅いです)。

コードは次のようになります。

protected override void panel1_Paint(object sender, PaintEventArgs e, Image u)
{

        e.Graphics.DrawImageUnscaled(u, Point.Empty);

}

フィールドに画像を追加するためにオーバーライドを使用しようとしましたが、静的にしたかったので、スレッドから呼び出すことができました。残念ながらうまくいきませんでした。

しかし、まあ、私は試しました。

private void panel1_Paint(object sender, PaintEventArgs e)
{

     //   e.Graphics.DrawImageUnscaled(u, Point.Empty);

}

画像を取得できないことを除いて、「機能する」ものがあります。

画像変数を作って、その変数に画像を保存してペイントしてみました。しかし、ペイントはその中の画像を見ることはありません.画像にアクセスすることはできません.別のスレッドから書き込まれた原因を推測します.

//initialize
private Image Im;

////////

my Thread
 Im = Image.FromStream(....);
////////////7

         void panel1_Paint(object sender, PaintEventArgs e)
        { 
                if(Im !=null)
                e.Graphics.DrawImageUnscaled(Im, Point.Empty);          
        }

これは私が試した方法であり、失敗しました。

4

0 に答える 0