2011-07-19 15 views
0

画像がある画像ボックスとこの画像の上に楕円が描かれています。しかし、楕円の一部だけが現れます。グラフィックスがC#で表示されない

Graphics g = Graphics.FromHwnd(pictureBox1.Handle); 
g.FillEllipse(redBrush, rfidNode1.readerPos.X, rfidNode1.readerPos.Y, 15, 15); 

EDIT::コードは次のようになり、私はコピーして貼り付け、最後の行を二回...そう楕円を満たす唯一のラインがあるごめんなさい。また、xとyはピクチャボックスの範囲内にあります。

+1

2度入力しないと2回表示されません...どのような動作が期待されますか? – leppie

答えて

0

あなたはこれを試すことができますか? (必要に応じて寸法を変更してください)

Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height); 
Graphics g = Graphics.FromImage(bmp); 
g.FillEllipse(redBrush, rfidNode1.readerPos.X, rfidNode1.readerPos.Y, 15, 15); 
pictureBox1.Image = bmp; 

多分私はあなたの意図を忘れましたか?

+0

これはイメージを手動で作成しますか? – Jonathan

+0

はい、これはイメージを作成して(バッファとして)必要なすべてのグラフィックスを作成します。描画を終えたら、Imageプロパティを使って画像をPictureBoxに入れます。私は絵が画面上に1回だけレンダリングされるので、これはやや速いと思います。各描画操作の後ではありません。しかし、それはすべてあなたが必要とするものに依存します。 –

-1

安全な方法で画像ボックスを描画することが本当に可能かどうかはわかりません。安全な私は、あなたが望むときにあなたの楕円がすべて見えることを保証することです。カスタムビヘイビアが必要な場合は、PictureBoxはあまり良い解決策ではありません。

解決策のように、画像ボックスを持っている場所に手動で画像を描画することをお勧めします。

これが役に立ちます。

よろしくお願いいたします。

+0

どうすれば手動で画像を描くことができますか?画像のボックスに描画すると何か問題がありますか? – Jonathan

+0

@Jonatan:一般的にはpictureboxを使用することで何も問題はありませんが、カスタマイズする必要があるときは、管理するのが難しいです。状況によってはOSメッセージをポンピングする必要があるため、それを完全に支配するか、少なくとも行うのは難しいです。手動描画:GDI +を使用します。 GDI +について少し読んで、可能なものとそうでないものを判断してください。 – Tigran

+0

-1は、被験者を理解することなしにダウンボートするためのものです。 – Tigran

0

XとYが同じ場合は、2つの楕円を別々に描画しているため、最後の楕円のみが表示されます。また、XとYがピクチャボックスの範囲外にある可能性がありますか?

0

ペイントイベントをオーバーライドして、ペイントコードを配置しようとします。描画プロセスは非常に頻繁に実行され、その後グラフィックはちょうどオーバードライになります。コントロールに描画するための

Tutorial - Drawing with C#

0

、ペイントイベントに登録し、ペイントイベント引数で提供グラフィックオブジェクトを使用してみてください。

詳細と例についてはhereをご覧ください。

関連する問題