2011-12-18 11 views
4

キャンバスでフォームに描画してからupdatelayeredwindowを使用する方法はありますか?フォームは表示されませんが、テキストのみを表示するような超越したフォームのようなテキストですか?もしそうでなければ、キャンバス(opengl/directx)だけで、ある種の超越的なフォームを作る方法があるでしょうか?私はすべてのウィンドウの上部にコマンドを描画したいと思います。通常のキャンバス/テキストアウトでUpdateLayeredWindow

+0

このリンクは役に立ちますか? :[vcl-style-enabled-on-a-vcl-style-how-to-make-transparent-form](http://stackoverflow.com/questions/8317617/how-to-make-a-transparent-form -w-a-vcl-style-is-enabled) –

+0

これは役立ちますが、透明なフォーム、不透明なAAラベルなどを探しています... – Knobik

+1

画面に表示されるテキストのようなものを作成しますか?もしそうなら、見てください[ここ](http://stackoverflow.com/q/5200707/960757)。 [Dorin Duminica](http://stackoverflow.com/users/497849/dorin-duminica)それのためのコンポーネントを作成しました;) – TLama

答えて

7

フォームのTransparentColorプロパティを 'True'に設定してから、フォームの色をTransparentColorValueの同じ色に設定すると、フォームのすべてのクライアント領域が透明になります。あなたが使用してDelphiのバージョンは「TransparentColor [値]を」持っていない場合は、API呼び出しで同じことを達成することができますプロパティ:

Color := clBlack; 
    SetWindowLong(Handle, GWL_EXSTYLE, 
     GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_LAYERED); 
    SetLayeredWindowAttributes(Handle, 0, 255, LWA_COLORKEY); 

は、フォームのクライアント領域が透明になります。通常どおりにあなたはキャンバスに描くことができます。もちろん

procedure TForm1.FormPaint(Sender: TObject); 
begin 
    Canvas.Font.Color := clWhite; 
    Canvas.TextOut(0, 0, 'Text'); 
end; 

は、あなたはまた、その後、別のフォントの色を何でも透明色を持つフォーム上のラベルを置くことができます。

+0

これは私が忘れてしまったシンプルなsooooです:) thats私はほとんど欲しかったものです。今私はそれを一番上にする必要がありますと私はそれをクリックすることができます:) – Knobik

+1

クリックしてスタイルに 'WS_EX_TRANSPARENT'を追加;) – TLama

+0

TransparentColorValueとTransparentColorが少し助けました!...この白いアウトラインを削除する方法そのラベル?方法はありますか? [http://i42.tinypic.com/1z5lw7d.png] (http://i42.tinypic.com/1z5lw7d.png) – Knobik

関連する問題