問題タブ [timage]

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 投票する
2 に答える
724 参照

delphi - TImage は 32bpp JPG 画像を処理できますか?

何らかの理由で、設計時に JPG 画像を読み込むと、画像がグレー スケール画像として表示され、テレビのスキャン ラインを連想させる垂直バーが表示されます。画像のサイズが適切に設定されていません。画像は 500x364 32 bpp で、美しくプレビューできます。

色深度に関して TImage の制限はありますか?

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

delphi - TImageにグラフィックが割り当てられているかどうかをテストするにはどうすればよいですか?

プログラムのフォームにTImageコンポーネントがあります。

状況によっては、プログラムは以下をテストする必要があります。

「TImageコンポーネントのpictureプロパティに割り当てられた画像がある」場合は...

これどうやってするの?

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

delphi - 読み込まれた画像を失う TImage

Turbo Delphi Pro を実行しています。

TImage を使用して png 画像を表示しています。

Delphi を再起動して dpr ファイルをロードすると、TImage はまだそこにありますが、画像が失われ、コンパイルする前に画像をリロードする必要があります。

最初はパスの問題だと思ったので、dprと同じディレクトリから画像をロードしましたが、役に立ちませんでした。

他に何を試すことができますか?

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

delphi - デルフィを使用して画像をズーム

私はデルファイで働いています。ビットマップを割り当てる TImage があります。

imgmain は TImage のオブジェクトであり、bmpMain は TBitmap のオブジェクトです

画像をズームしたい。フォームにトラックバーが 1 つあり、トラックバーをクリックすると画像がズームされます。私は何をすべきか?
ありがとうございました。

編集:私はここ
でいくつかの解決策を見つけましたそれは動作しますが、私のイメージをカットします。

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

delphi - TImage と TScrollBox の問題

私はデルファイで働いています。
TImage コントロールを配置するスクロール ボックスが 1 つあります。ここで、TImage コントロールにレンダリングされた画像をズームしたいと考えました。ということで、TCanvasのstretchDrawメソッドを使っています。私のコードは -

画像を正しくズームしていますが、私の問題は、スクロールボックスのサイズも画像のズームで変更する必要があることです。
Also explain me parameters of Canvas.StretchDraw method. I am little confused with it.
ありがとうございました。

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

delphi - ImageMap を使用して画像 (PNG) を抽出し、TImage に表示する

私は次のことを達成しようとしています:

50個の他のpngファイルを含む大きなpng(透明な背景16000 x 70px)を想定します...そのpngをロードして、そこから個々のpngを抽出する必要があります(たとえば、座標で言うことができる関数のようなものを用意するのが最善です(左、上、高さ、幅) どの png を抽出しますか? 抽出した png を timage に表示する必要があります...

もちろん、Gif 画像を使用してアニメーションを再作成することもできますが、何らかの理由で png が必要です...

イメージリストにロードするというアイデアがありましたが、50 個の png のすべてが (320x70px) の寸法を持っているため、失敗しました timagelist は 256px 幅しかサポートしていません...

私の次のアイデアは、次のようなことができるかもしれないということでした:

Png を TBitmapArray にロードします。まあ、抽出は非常にうまく機能しますが、すべてがアルファチャンネルを失っているという副作用があり、何も透明ではなく、代わりに太い黒い境界線が表示されます:-(

誰かが透明性を失うことなくこれを行う方法を知っているかもしれません...どんな助けも大歓迎ですが、おそらくサードパーティのコンポーネントがなくてもいいでしょう...少なくともGr32も大丈夫でしょう

よろしくお願いし
ます。

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

delphi - Delphi 7 のラップトップでの Timage 透明度

私がやろうとしていること

複数のグラフィックスを Timage に描画しようとしています。描画するこれらのグラフィックスは、フードフィルと線を含む順序付けられたレイヤーで構成されています。順序付けとダブル バッファリングを確実にするために、複数のバッファを使用します。

私がしていること

私が期待すること

各画像オブジェクトが互いの上にレイヤー化され、各画像レイヤーがそのレイヤーの完全な画像になることを期待しています。私の例では、後ろに旗が付いたロボットです。最初に旗が描かれ、次にロボットが描かれます。

私が得るもの(PC上)

PC では、期待どおりの結果が得られ、すべてが正しいように見えます。

私が得るもの(ラップトップ上)

ほぼすべてのラップトップと一部の PC では、ロボットしか表示されません。フラグを描いているかどうかを確認するためにいくつかのステートメントを入れました。ゲームは正しい方法でフラグとやり取りすることさえできます。さらに調査したところ、「描画シーン」で描画された最後の画像のみが表示され、画像がキャンバス全体に直接描画されたときにすべてが表示されたことがわかりました(これは、塗りつぶしレイヤーが重なっている理由で実行できません)

私が考えていることは起こっている

だから私が推測したのは、TimageのTimage.transparentプロパティが機能していないか、一部のマシンで異なる方法で計算されているということです..

これを証明するためにテストを行い、キャンバスを赤くしました。次に、そのキャンバスに 0,0 i Timage でプロパティ transparent=true を描画し、赤いキャンバスの真ん中にドットを 1 つだけ配置しました。その結果、真ん中に点のある白いキャンバスができました。

非常に基本的なグラフィックス ドライバーを搭載したマシンは null または透明を白として扱い、より強力なマシンは null または透明を透明として扱うようであると推測しています。

Timage.Transparent プロパティが true であったため、これは少し失敗したようです。

編集:更新!!! ATI グラフィックス カードでは、色が「null」の場合、PF24bit の形式で解釈されるため、アルファ チャネルも透明度もありません。

Nvidia カードでは、PF32bit として取り、null を透明として扱います。

この問題を回避する明白な方法は、bitmaptype を PF32bit に設定することですが、それでもうまくいきません。次に、おそらくそれでは不十分であり、背景がnullのままではなく透明に設定されていることを確認する必要があると想定しました..しかし、Timage内にアルファで色を設定するためのツール(私が見ることができる)はありません. すべてのキャンバス描画関数は、RGB 24 ビットの Tcolor を必要とし、RGBA 32 ビットの TcolorRef のみが必要です....アルファ 0 で描画する方法はありますか?

私が知る必要があると思うこと

透明なプロパティをすべてのマシンで強制的に機能させる方法、またはラップトップを白として透明に貼り付けないようにする方法、または同じ結果を達成する方法。

誰にも解決策やアイデアはありますか?

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

delphi - TcustomContol で Picture.LoadFromFile() を使用する方法

TcustomControl から派生した TSkinPanel を作成しました

FGraphic: TPicture があります。

FGraphic は TSkinPanel のキャンバスに描画され、TObject インスペクタから読み込んで画像化すると正常に動作します。

しかし、実行時に画像をロードすることはできません "Form1.SkinPanel1.Picture.LoadFromFile('skin.bmp');

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

delphi - Delphi 6:アルファチャンネルを持つTextOutでビットマップを作成する方法は?

私が尋ねた質問が、探している答えを得るのに最適な形式ではない場合に備えて、私の全体的な目標について説明します。X 軸を中心に回転する単語または「単語ボール」の球体があります。単語が後ろに回転するにつれて (Z 座標は -1 から 1、前から後ろに移動します)、各単語のサイズと不透明度を変更して、「前」の単語が 100% 不透明でフルサイズの単語になるようにします。後ろは小さく、やや透明です。私はこれをまっすぐな Delphi コードで行い、Direct3D などを避けたいと思います。回転コードは既に正常に動作しています。Z 座標ベースの知覚シェーディングのアイデアを実装するだけです。

単語ボールを作成するとき、単語ごとに TImage コンポーネントを動的に作成します。TCanvas.TextOut() メソッドを中央に配置して、単語を TImage ビットマップに「出力」します。BitBlt を使用して、そのビットマップをメイン Canvas 内の単語ボールを保持する正しい場所にコピーするつもりです。BitBlt は高速で、オンザフライでビットマップのサイズを変更できるため、私の知覚シェーディング操作の要件の 1 つを満たしています。

しかし、アルファブレンディングを容易にする最善の方法がわかりません。Windows には AlphaBlend() 呼び出しがあることを知っており、使用するのはかなり簡単です。しかし、アルファ チャネルを持つ単語ごとの TImage コンポーネントのコピーであるビットマップを作成する方法を知る必要があります。私の場合、Z座標に基づいて単語全体に不透明度を均一に適用したいので、ビットマップ全体のアルファチャンネルの値は均一になることに注意してください。

TCanvas.TextOut() を使用して作成されたビットマップを持つ動的に作成された TImage コンポーネントには、アルファ チャネルがありますか? そうでない場合、AlphaBlend() 呼び出しに渡されるアルファ チャネルを持つ TImage ビットマップのコピーをリアルタイムで作成または作成するにはどうすればよいですか? これをすべて行うためのより良い方法があれば、私に知らせてください。

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

delphi - Delphi 6:TextOut()メソッドを使用して大きなサイズの高品質テキストを表示するにはどうすればよいですか?

TCanvas.TextOut()を使用してテキスト文字列を出力するTImageコンポーネントがあります。TImageの高さと幅を50ピクセルX(TextWidth)ピクセルのような大きなサイズに設定し、Canvasフォントの高さを48ピクセルのような少し小さいサイズに設定しました。次に、TImageのビットマップをメインCanvasにBitBlt()します。画面に表示されるのは、ひどくギザギザになっている大きな細い文字です。代わりに私が欲しいのは、滑らかに見える太いジャンボ文字です。TImage / BitBltコンボを使用する理由は、テキストのサイズ変更とアルファブレンディングをその場で行う必要があるためです。

大きく滑らかな文字をTImageビットマップに印刷する最も簡単な方法は何ですか?