UpdateLayeredWindowと通常のキャンバス/ textout

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

4
それは役立つが、私は透明なフォーム、不透明なAAラベルまたは何かを探しています...
追加された 著者 Knobik,
@TLamaは、ほとんどのexacly何を探して、私はそれと私は静的な何かを作成することができると思いますか?
追加された 著者 Knobik,
私はフォームがtotaly transculentになる必要があります:(このコンポーネントは私がお手伝いをすることができません...
追加された 著者 Knobik,
画面に表示されるテキストのようなものを作成したいですか?その場合は、こちらをご覧ください。 Dorin Duminica がコンポーネントを作成しました;)
追加された 著者 TLama,
このリンクは役に立ちますか? :ハウツーメイク-transparent-form-a-vcl-style-is-enabled
追加された 著者 LU RD,

1 答え

フォームの TransparentColor プロパティを 'True'に設定し、フォームの色を TransparentColorValue の同じ色に設定すると、フォームのすべてのクライアント領域が透明になります。使用しているDelphiのバージョンに 'TransparentColor [Value]'プロパティがない場合は、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;

もちろん、透明色とは異なるフォント色を持つフォームにラベルを付けることもできます。

7
追加された
..とフォームスタイル 'fsStayOnTop'
追加された 著者 Sertac Akyuz,
@タリベック - あなたのラベルは何色ですか?
追加された 著者 Sertac Akyuz,
@タリベック(Talibek) - ラベルのフォント色は透明色とは異なるはずですが、フォームの表面上の色の1つが透明になる点が全体的です。しかし、あなたが見ているのは、背景色が変わったために何らかのアンチエイリアシングアーティファクトかもしれないと思います。もしそうなら、あなたはラベルを使って落とし、 'LOGFONT'の 'lfQuality'で遊ぶ必要があるでしょう。おそらく、異なるフォント色を持つ複数のラベルを使用して、いくつかのアウトライン効果を達成しようとします。
追加された 著者 Sertac Akyuz,
@Talibek - 背景を 'clWindowText'とは若干異なる色に設定することで、目に見えないアウトラインのないラベルを作成できます。 F.i. BgColor:= graphutil.ColorAdjustLuma(clWindowText、10、False)で、フォームの 'Color'、 'TransparentColorValue'、ラベルの 'Color'をこの値に設定すると、ラベルのフォント色は 'clWindowText'になります。アウトラインを取り除くのに役立ちますが、アンチエイリアスも減少し、今ではもっと醜いように見えます。アウトラインがない場合は、フォームの下の色が似ている場合は表示されません。透明性とは全く違う問題だと思いますが、質問することを検討してください。
追加された 著者 Sertac Akyuz,
これはとても簡単なことで、私はそれについて忘れてしまった:) thats私はほとんど欲しかったことだ。今私はそれを最上位にしなければならないと私はそれをクリックすることができます:)
追加された 著者 Knobik,
TransparentColorValueとTransparentColorはちょっと助けましたが... ...その白いアウトラインをそのラベルから削除するには?方法はありますか? http://i42.tinypic.com/1z5lw7d.png
追加された 著者 Knobik,
clWindowTextはフォントの色、clBtnFaceは色です
追加された 著者 Knobik,
TransparentColorValueと同じ色
追加された 著者 Knobik,
クリックスルーの場合は、スタイルに WS_EX_TRANSPARENT を追加します。
追加された 著者 TLama,
セルタックは天才です。
追加された 著者 user30478,