2010-12-18 6 views
1

私はDelphiを使用しています。クラスTControlで独自のラベルコンポーネントを作成しています。 プロパティ(キャプション、フォントなど)に従ってテキストをペイントする前に、コンポーネントの場所に何もないように、ペイントrectをクリアします。私はガラスのようにして、それの後ろにある他のコンポーネントが表示されるようにしたいのです。テキストをペイントします。ラベルの後ろに配置されている他のコンポーネントをペイントするにはどうしたらよいですか?以前に塗られたものをどのようにクリアすることが可能ですか?

+1

チャールズ・ペッツォールドのWindowsプログラミングの精密な研究は読んでいますか?あなたは確かにそこに答えを見つけるでしょう。 –

答えて

4

これを行うには、何もする必要はありません。 :-)

透明なラベルのようなコンポーネントを作成する場合は、TGraphicControl基本クラスを使用するのが最適です。これは実際にペイントするキャンバス以上のものではありません。コンテンツを変更する必要があるときはいつでも、Invalidateメソッドを呼び出してコントロールを再描画します。これにより、オーバーライドできるPaintメソッドが呼び出されます。すべての塗り直しで、コントラストは透明で透明になりますが、Paintメソッドでは描画する部分を除きます。

0

背景ペイントを無効にして無効にしない限り、何もする必要はありません。それはあなたが行くベースクラスに依存します。

Canvas.Brush.Style:=bsSolid; 
Canvas.Brush.Color:=self.Color; //If you have a public color property 
Canvas.FillRect(ClientRect); 

また、TControlCanvasで読み上げる必要があります(Paint()メソッドで)。このトピックを詳しく扱うウェブサイトは次のとおりです:http://www.delphidabbler.com/tips/75

関連する問題