問題タブ [aero-glass]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
delphi - Delphi ボタンは Aero ガラスに白い境界線を表示します
私は、Delphi 2010 で Aero を使用して見栄えの良いデザインを見つけようとしています。明らかな用途の 1 つは、ガラス フレームを拡張して、画面の下部に [OK]/[キャンセル] ボタンを含めることです。ただし、Delphi 2010 ではこれが正しく表示されないことに気付きました。各ボタンの周りに白い境界線があります。
この画像は問題を示しています。上の 3 つのボタンはアプリからのもので、下の 2 つのボタンは Paint.NET の [レイヤー プロパティ] ダイアログから取得したものです。
DoubleBuffered のさまざまな組み合わせと、最初にコントロールを他のコントロールに配置するいくつかの組み合わせを試しましたが、問題は残ります。何か案は?
java - Aero Glass エフェクトと SWT の組み合わせ
お気に入りのプロジェクトとして、私は Aero Glass 効果を SWT アプリケーションに統合するという概念を試してきました。Łukasz Milewski は、これをどのように達成できるかを説明する優れたブログ投稿を行っています。
コントロールを追加するまで、これは美しく機能します。これにより、黒は透明のままになります。
フォローアップ投稿でもこれを行う方法を示していますが、SWT ライブラリを変更する必要があります。(少なくとも、プライベート SWT 関数は でオーバーライドされるため、私はそう信じてい@Override
ます。)
コントロールが透明にならないようにするにはどうすればよいですか? さらに良いことに、透明性の恩恵を受けるにはどうすればよいですか (たとえば、その上に画像を配置するなど)、それを賢明な方法で使用するにはどうすればよいですか?
windows - DwmExtendFrameIntoClientAreaをいつ使用するのですか?
ご存知のように、いくつかの最新のアプリケーション(IE9、Firefox 4、Chrome、Paint.NETなど)は、Aeroガラス効果にDwmExtendFrameIntoClientAreaを使用しています。
しかし、これを実際に使用する必要があるのはどのタイプのアプリケーションですか?ブラウザの場合、余分なスペースをできるだけ最小限に抑えることは理解できますが、実際には、何が重要なのでしょうか。フレームなしでウィンドウを作成しないのはなぜですか(DWMが存在しない場合のGoogle Chromeのように)?この効果を使用するアプリケーションの種類と時期に関する大まかなガイドラインを探しています。
windows - すべてのWin32プログラマー向けのWindowsAeroGlass(DWM、GDI、GDI +)で描画するためのドキュメントとAPIサンプル
Win32 / GDI APIの使用方法や、Win32 APIを使用してガラスのフォームに直接描画およびペイントするために、それに取って代わるものを学習するための優れたリソースを探しています。
Delphiを使用しているときに、これにDelphiまたはVisualC++のタグを付けました。あなたが見つけることができるどんなコードサンプルと記事でもありがたいです。MSDNの記事はこれについて書かれていないようです。
目標として、次のいずれかを実行したいとします。(a)Google Chromeの機能を再現する(ガラスフレームの一部としてタブ)(b)MS Office 2010の機能を再現する(ガラスフレームの保存ボタン、MFCではVS 2010、「クイックアクセスツールバー」として(下の図を参照)。
私はMFCを使用していませんが、MFCソースを調べることが良い情報源である場合、MFCソースまたはBCG元のソース(両方を持っています)のどこにクイックアクセスツールバーのレンダリング/ペイントコードが実装されているか知りたいです。
更新:以下の回答の1つからの関連するネイトリンクは、NC(非クライアント)ペイントメッセージ、ガラスフレームにペイントするときの処理方法、およびそれに関するMSDNの記事をここに示しています。
delphi - Delphiのガラス上のGoogleChromeスタイルのタブ
DelphiアプリケーションのWindows7でGoogleChromeスタイルのタブを実装しようとしています。
この要素は次のとおりです。
- タブは、グーグルクローム自体の場合と同様に、クライアント以外の領域に拡張される場合があります。
- Glassが有効になっている場合、VistaおよびWindows7で正しく描画されます
- タブはグーグルクロームのように機能し、ガラス越しにグーグルクロームのように見えます。
私が克服しなければならない課題は次のとおりです。
- 非クライアント領域に拡張するコントロール(VCLコントロール)を取得するにはどうすればよいですか?(これを行うコントロールの良いサンプルは、VCLソースに含まれているリボンコントロールですが、他の誰もそれを行っているのを見たことがありません。リボンを機能させるには、邪悪なハッキングが必要です)
- ガラスの上にビットマップを正しく描画するにはどうすればよいですか?(DWM API)。関連する質問はすでにその側面に答えています、ここで、この質問は私によっても尋ねられました。
aero - Aero: ガラスに単色 (不透明) の色を描画する方法は?
GDI+ を使用してさまざまな色を描画します。
ガラス上では不透明な色が適切に表示されないことがわかります。
ガラスに単色を描くにはどうすればよいですか?
また、完全に不透明な色は、その色に応じて異なる方法で処理されることにも気付くでしょう。
- 不透明な黒: 完全に透明
- opaque color: 部分的に透明
- 不透明な白: 完全に不透明
さまざまな色がどのように処理されるかを説明しているデスクトップ コンポジターのドキュメントを誰か教えてもらえますか?
アップデート 3
FillRectangle
の動作が とは異なることにも気付くでしょうFillEllipse
:
FillEllipse
不透明な色で不透明な色を描くFillRectangle
不透明な色で描画すると、部分的に (または完全に) 透明になります
無意味な行動の説明をお願いします。
更新 4
Alwayslearningは、合成モードを変更することを提案しました。MSDNから:
CompositingMode 列挙体
CompositingMode列挙体は、レンダリングされた色を背景色と組み合わせる方法を指定します。この列挙は、 Graphicsクラスの 'Graphics::SetCompositingMode'メソッドによって使用さ
Graphics::GetCompositingMode
れます。色をレンダリングするときに背景色とブレンドすることを指定します。ブレンドは、レンダリングされる色のアルファ コンポーネントによって決定されます。
色がレンダリングされるときに背景色を上書きすることを指定します。このモードは、TextRenderingHintClearTypeGridFit と一緒に使用することはできません。
の説明からCompositingModeSourceCopy
、それは私が望むオプションではないように思えます。それが課す制限から、それは私が望むオプションのように思えます. そして、構成、または透明度が無効になっている場合、 SourceBlendではなくSourceCopyを実行するため、必要なオプションではありません。
幸いなことに、それは私の実際の問題を解決しないので、私が考えなければならない悪ではありません. オブジェクトを作成した後graphics
、合成モードを変更してみました:
結果は出力に影響しません。
ノート
- Win32 ネイティブ
- .NET ではない (ネイティブ)
- Winforms ではない (すなわちネイティブ)
- GDI+ (ネイティブ)
こちらもご覧ください
aero - Aero:ClearTypeテキストをガラスに描画する方法は?
GDI +を使用してガラスにテキストを描画する:
ClearTypeが有効になっているテキストは、ガラス上での描画が非常に不十分であることに気付くでしょう。
しかし、ガラスを無効にすると、もちろん、テキストはうまく描画されます。
比較のために、ここにアンチエイリアスフォントスムージングがあります:
そして、ここにフォントスムージングはありません:
注:StackOverflowはモニター上の画像のサイズを変更するため、実際よりも見栄えのするフォントスムージングはありません。
ガラスにClearTypeテキストを描画するにはどうすればよいですか?
ノート
- Win32ネイティブ
- .NETではない(つまりネイティブ)
- Winformsではない(つまりネイティブ)
- GDI +(つまりネイティブ)
Markが示唆しているのは、テキストレンダリングに対するユーザーの好みを尊重できないことです(つまり、 " SystemDefault
"。ClearTypeはGlassでは機能しないため、使用できません。
つまり、ガラス上でレンダリングする場合は、テキストレンダリングを次のようにオーバーライドする必要があります。
それ以外の場合は、TextRenderingHint
をデフォルトのままにしておく必要がありますTextRenderingHintSystemDefault
。
も参照してください
winapi - Windows Vista/7 のガラスが完全に割れた?
アプリケーションでメディア プレーヤーのガラス効果を取得しようとしていますが、あらゆる障害に直面しています。それは私ですか、それとも API ですか?
私は電話することから始めました:
背景を黒く消去します。
編集ボックスを追加するまではすべて問題ありませんでした。EditBox を使用すると、黒いテキストが表示される場所がガラスに置き換えられます。この問題は、ComboBoxEx などのより高度なコントロールを使用すると、途方もなく大きくなります。それらは混乱のように見え始めます。
このアプローチの明るい面は、アルファ ブレンドされた画像が問題なく見えることです。そして徐々にグラスに溶け込んでいきます。
編集ボックスの解決策は、LWA_COLORKEY で WS_EX_LAYERED を使用し、ガラス マスキングにひどい色を使用し、その色の背景を消去することのようです。残念ながら、これは他のものを壊します。ウィンドウに WS_EX_TRANSPARENT スタイルを設定していなくても、アイコンのアルファ ブレンディングは放射性グリーンにブレンドされた影で非常に見苦しく、ガラス自体はクリックスルー可能になります。
3 番目の提案は、GDI+ を使用した一種のカスタム構成ですが、GDI+ はソフトウェア フォールバックであり、EditBox または ComboBoxEx を構成に使用できる画像にレンダリングする方法が見つからないため、これは悪いアプローチのようです。後で。
何か不足していますか?
vb.net - 境界線のない Windows フォームで Aero Glass を取得するにはどうすればよいですか?
DWM APIを使用してVB.NET 2010アプリのフォームにAero Glassを表示しようとしていますが、関数呼び出しが示唆するように、フレームの外観をクライアント領域に拡張します。フォームに境界線がない場合、何も起こらず、フォームが形成されます見えなくなります。ということで、縁なしの形でエアログラスを手に入れることはできるのでしょうか....??