問題タブ [tpngimagelist]

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.

0 投票する
1 に答える
777 参照

delphi - Delphi TPngImageList(またはTImageList)の読み込み時間を改善する方法

私はアプリケーションで約100個のアイコンのセットを使用しています。これらは固定の参照番号を使用してアクセスされ、これらの番号はユーザーがアイコンを選択できるようにもなっています。必要な3つの解像度は、16x16、32x32、および48x48です。これらの各解像度はTPngImageListに保持されており、これら3つの画像リスト(TArtImageLibraryImageLists)を含むTDataModuleを使用して「アイコンライブラリ」を作成しました。単純な「最初の使用時に作成」メソッドは、イメージリストのいずれかが必要な場合にこのTDataModuleをインスタンス化します。LargeImagesまたは画像リストへのアクセスを必要とするコントロールのそのようなプロパティは、必要な解像度関数を呼び出すことによって簡単に設定されます。

問題は、プログラムが起動するときのロード時間です。これは、高速のマシンでは約1秒です。明らかに最悪の原因は48x48の画像リストですが、処理を高速化するより優れたロードメカニズム(リソースファイルの使用など)があるかどうか疑問に思っています。または、画像リストを再フォーマットする方法はありますか?TreeViewなどの場合など、実行時にTImageListが必要です。

ありがとう、ブライアン。

0 投票する
1 に答える
834 参照

delphi - Delphi7CustomImageListの問題

私は次の問題に遭遇しました:

私のDelphi7プログラムは、WinXP / Vista / 7を実行しているほとんどのコンピュータでスムーズに実行されますが、一部の古いWindows XPインストール(ごく一部)では、次の問題が発生します。

システムイメージリストがあり、システムイメージリストのコピーに自分のアイコンを追加しています。アイコンを追加すると、「無効な画像サイズ」が表示されます。EInvalidOperationエラー。

問題のコードは次のとおりです。

問題をさらに悪化させるために、私はTPngImageListコンポーネントを使用していますが、コードによると、標準のDelphi関数を呼び出しているようです。

最近、この問題が発生しているコンピューターの1つで、uxtheme.dllまたはexplorer.exeのいずれかにWindowsスキンプログラムがパッチされていることがわかりました。

したがって、誰かまたはプログラムが、Delphiプログラムをクラッシュさせるような方法でシステムイメージリストをハッキングしていると思います。

これを修正する方法について何かアイデアはありますか?

ありがとう!

0 投票する
3 に答える
5914 参照

delphi - Delphiおよび48x48(またはそれ以上)のイメージリスト-回避策はありますか?

システムイメージリスト(SHGetFileInfoとSHGFI_LARGEICONを使用)を取得し、独自のアイコンを2つ追加して、TListViewに添付しています。

問題は、ユーザーのアイコンサイズが32x32に設定されていない場合(たとえば、48x48に設定されている場合など)、Delphi7TImageListが「無効な画像サイズ」エラーで失敗することです。

回避策が利用可能かどうか誰かが知っていますか?TPngImageListを使用してみましたが、他の問題が発生します。

また、アイコンのアルファチャンネルを保持したいので注意してください。アイコンは見苦しく見える傾向があるため、通常の1ビットの透明度では不十分です。

ありがとう!

0 投票する
1 に答える
547 参照

delphi - DIB を TPNGObject に変換する方法は?

私はDIBハンドルを持っています。TPNGObject透明度を維持したまま変換するにはどうすればよいですか?

編集: このソリューションでは方法2を使用します

Transparentしかし、フラグをtrueに設定しても、結果のビットマップは透明ではありません

0 投票する
1 に答える
1115 参照

delphi - PNG画像を適応させるためのDIBからTbitmapへのコード操作?

このコードを使用して DIB を TBitmap に変換しますが、このコードを PNG 画像に適したものにするにはどうすればよいでしょうか (透過性を維持します)。Transparent プロパティを true に設定するのに疲れましたが、コードは 256 色のビットマップ用に作成されたようです。

コードソース:こちら

0 投票する
2 に答える
2950 参照

delphi - DelphiでPNG画像の色を白から黒に変更するにはどうすればよいですか?

Delphi XE2 で Gustavo Daud バージョン 1.4 の TPNGList を使用しています

ボタン画像として使用するPNG 256x256画像をいくつか保持しています。

ただし、背景色を変更する必要があり、画像のコントラストが良くありません。

だから私は今暗い背景のための白いイメージを持っています.

明るい背景用に黒に変更する必要があります。

透明性があり、維持する必要があります。白いピクセルしかありません。しかし、一般的なソースからターゲットへの関数も素晴らしいでしょう。

編集:「それを実行してください」の提案に従って、次のことを試しましたが、黒または白のボックスしか取得しません:

私はこのコードを使用してこれを呼び出しています:

どの部分が間違っているかわかりません。これは 1 つのコンポーネントの一部であり、設計時に割り当てられたイメージを変更しようとしています。私が読み込んだのは、透明度のある 256x256 の PNG 画像でした。

その TImage を使用する必要があります。ボタンではないことはわかっています。そして、おそらくそれを行うコンポーネントがあります。私が使用している特定のライブラリのため、自分で作成する必要があります。

PNGFunctions の Gustavo 関数の 1 つから PNGInvertWB のアイデアを得ました。

だから、私は画像の経験がまったくないのですが、このコードの何が問題なのですか?

これは、画像があるコンポーネントでどのように見えるかです:

オリジナル: オリジナル

後: 上記のこの関数の後

PNGFunctions の次の関数を使用して、これを試しました。

各ピクセルを取得してグレースケールに変更していたため、GrayscaleRGB を変更したところ、それに応じて黒または白に変更できると信じていました。