1
私はC#を使用してタブコントロールに画像を描画する必要があります。私は、DrawModeをOwnerDrawFixedに、そしてSizeModeをFixedに変更するヒントをいくつか得ました。 DrawItemイベントのためにその書き込みハンドラ後:C#を使用してタブコントロール上にイメージを描画する方法は?
this.tabControl1.DrawItem +=
new System.Windows.Forms.DrawItemEventHandler(this.OnDrawItem);
private void OnDrawItem(object sender, DrawItemEventArgs e)
{
Graphics g = Graphics.FromHwnd(tabPage1.Handle);/*e.Graphics;*/
DrawArrowImage(g);
}
今、こののdrawImage()関数が動く矢印に似ていると、次の点に矢印画像を再描画維持するタイマーを起動します。ここで私はいくつかの問題があります:
- 私はアプリケーション(同様のOnPaint())を実行するときにOnDrawItemが呼び出されていません。どうしたらいいですか?
- Invalidate()を呼び出すと、paintイベントが呼び出され、OnPaint()が呼び出されるため、Invoke OnDrawItem()を呼び出せるように 'DrawItem'イベントを呼び出す方法はありますか?
おかげで、 RPSは、あなたはそれが間違ってやっている
私はGraphics = Graphics.FromHwnd(tabPage1.Handle)を使用しました。 DrawArrowImage(e.Graphics); その図面ですが、アプリケーションとして開始されません。グラフィックスg = e.Graphicsを使用している場合。それはすぐに描画しますが、フォーム上のタブコントロールの背後にあります。 – RPS
タブページのペイントイベントの代わりにフォームのペイントイベントを購読したように聞こえます。 –
ありがとう...私は今、同じことをやっていて、同じことをやっています。そして、タブページ上に画像を描くことができます。そして、ペイントハンドラを繰り返し呼び出すために、this.tabPage1.Invalidate(); ..この場合、他の描画されたイメージはちらついています。ペイントハンドラで、GraphicsオブジェクトをGraphicsとして取得します。g = Graphics.FromHwnd(tabPage1.Handle);グラフィックスg = e.Graphics; ...両者で同じフリッカー出力...ウィンドウフォームを描画する場合は滑らかでした。 – RPS