問題タブ [graphics32]

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 に答える
1401 参照

delphi - Graphics32 - 透過描画レイヤーをpngに保存

ImgView32 のレイヤーに点線を描画します。後で、各レイヤーを透過 PNG として保存したいと思います。私が持っている他のレイヤーでは、保存は問題なく機能します。ただし、描画レイヤーの場合はそうではありません。

質問を理解しやすくするために、gr32 ライブラリのコード例、より具体的には Layers の例を取り上げます。メイン メニューのオプションの 1 つは、カスタム描画レイヤーを追加することです (新しいカスタム レイヤー -> シンプル描画レイヤー)。次に、そのレイヤーを透明な PNG 画像として保存しようとすると、破損した PNG ファイルが作成されます (Paint.net や Microsoft Photo Viewer などの他の画像ビューアーで開くことはできません)。次のコードでわかるように、レイヤーの bitmap32 をビットマップとして保存しようとすると、同じことが起こります...

Bitmap32 を透過 PNG として保存するための 2 つの方法を試したので、最初の方法は次のとおりです。

したがって、上記の方法は、次のように PNG がレイヤーに読み込まれている場合に機能します。

しかし、レイヤーの例のコードで作成したレイヤーを保存しようとするとすぐに、結果が破損します。このようにレイヤーをビットマップとして保存しようとしても(ただし、レイヤーをPNGにする必要があるため、これは私の意図ではありません):

同じ破損が発生します。したがって、例外などを受け取ったわけではありません...どういうわけか破損して保存されます。

GR32_PNG アプローチなど、Bitmap32 を透明な PNG として保存する他の方法も試しました。

どこ

しかし、このアプローチを使用すると、この特定のレイヤーを保存しようとすると EAccessViolation が発生します。他のレイヤー(描画レイヤーではない)の場合、このカスタム描画レイヤーを除いてプロジェクトがクラッシュしません。アクセス違反は次の行で発生します。

png.Assign(bm);

Bitmap32ToPNG 関数内

なぜそれが起こるのか、どうすればこれを防ぐことができるのか分かりますか?

編集

TPositionedLayer には何らかの理由で Bitmap32 がない可能性があるため、代わりに TBitmapLayer を使用してみました。だから私のコードは次のようになります:

デフォルトのレイヤー デモ アプリケーションを使用していることに注意してください。したがって、これは追加されたコードです。デモ コードでは何も削除も変更もしていません。そこで、新しいレイヤー (TBitmapLayer) を作成し、onPaint で描画します。最後に、そのレイヤーの内容を PNG として保存します。しかし、onPaint は実際のレイヤーではなく別の場所に描画されるようです。そうしないと、保存された画像が空である理由がわかりません。今回は結果のPNGは壊れていませんが、空です...

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

delphi - TBitmap32 への透明な Png

TBitmap32 にロードしたい png があります。

ビットマップをロードした後、次のように呼び出します。

ただし、すべての白いピクセルは透明です。PNG画像の透明部分だけをどうすればいいですか?これは、標準的な方法で示されている画像の端の周りにアルファ透明度がある私の画像です。

ここに画像の説明を入力

そして、これが実際の画像です:

ここに画像の説明を入力

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

delphi - Graphics32: 多くの画像のサイズを変更する

2016 年 3 月 24 日、私は 76 歳で、それを書いたときは理にかなっていると思いましたが、他のみんなと同じように、何を求めていたのかわかりません。これは、私がインターネットを精査してまとめたものです (あまりきれいではありません)。ほとんど機能しますが、欠けているのはアスペクト比を維持することだけです。背の高い写真が太って見えるようになっています。40 年間のプログラミングで、グラフィックスのコーディングに合計 2 時間費やしたことになるでしょう。:)

2016 年 3 月 23 日、私はここで善良な魂からのアドバイスを受けて、Graphis32 で弾丸をかみ砕きました。満足していましたが、壁にぶつかりました。データベースに約1200枚の画像へのパスがあり、表示、保存などはすべてうまくいっています.

一部の画像は 6 ~ 9 MB であり、PC 画面でのみ表示されるため、それほど大きく保存する必要はありません。それらを希望のサイズ、たとえば 1920 x 1080 に縮小し、H x W の比率を維持したいと考えています。すでに 1920 x 1080 より小さい画像を縮小したくありません。

私は多くの検索と試行錯誤を行ってきましたが、これまでのところエラーのみです。ユーザーが手動で作業しているときに、スケーリングや回転の後に保存部分があります。しかし、データベース全体をスキャンして、その場でサイズを変更できるようにしたいと考えています。

コードスニペットは素晴らしいでしょう。

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

delphi - 非表示の TImage32 を操作する方法

TImage32 を使用して、いくつかのレイヤーを位置や透明度などと組み合わせようとします。したがって、実行時に TImage32 を作成し、親を nil に設定し、ファイルからビットマップをロードし、ファイルからそのビットマップの上にレイヤーをロードします。結果を保存したいのですが、実際の結果がどこにあるかを見つけることができないようです。設計時に TImage32 を作成して同じことを行うと、それが表示され、結合されたビットマップの結果が TImage32 の Buffer フィールドにあり、Image32.Buffer.SaveToFile('test.bmp') を使用して結果を保存できます。コンポーネントが表示されない場合、Buffer は空のビットマップであり、結合されたビットマップは作成されていないように見えます。

誰かがこれに光を当てることができますか? ビットマップを GR32 と組み合わせて保存するにはどうすればよいですか?

どうもありがとう!ウィレム

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

delphi - Delphi XE で混合ベクトル イメージとビットマップ イメージをレンダリングする最良の方法は何ですか?

ピクセル間の境界を重ね合わせたビットマップ イメージをレンダリングできるようにしたいと考えています (境界の色は、自家製のルーチンによるものです)。ズームとパンでは、境界の目盛りは同じままでなければなりません。

画像の例を次に示します。拡大しても境界の厚さが変わらないことを示す画像

ズームとパンについては、こちらで説明されているようにgraphics32を使用しています 境界を描くために、AggPasModを使用してDelphi 2010、XE、XE2のベクター画像を作成することを考えました...これはChristian Buddeによって更新されましたこちら.

ただし、 AggPasModは独自のタイプの画像で動作するため両方のツールを相互作用させるのに苦労しています

私はコーディングの専門家ではないので、その問題を解決する最善の方法についてアドバイスをいただければ幸いです。

前もって感謝します、

0 投票する
0 に答える
210 参照

delphi - Graphics32 の 16 ビット演算制限を回避する方法はありますか?

Graphics32 (1.9.1) を使用して PolygonTS 描画ルーチンを使用してポリゴンを描画する CAD アプリケーションがあります。

すべてがキャンバス上にある場合は問題なく動作しますが、オブジェクトをズームすると問題が発生します。

ポリゴンのすべてのポイントが画面外にあるかどうかを確認して描画しないことができます。部分的に画面上にあるポリゴンを描画すると問題が発生します。

Graphics32 は、処理できるピクセル数を効果的に 65536 (16 ビット) に減らす固定小数点頂点演算スキーム (Tfixedpoint) を使用しているようです。描画されているポリゴン上のポイントがこの値を超えると、演算がオーバーフローし、アーティファクトが画面に描画されます。

これは非常に控えめなズームで発生します。この問題が以前に遭遇したことがないとは想像できませんが、ざっと検索しても何も出てきません。ポリゴンを手動でカリングする必要があると、GR32 を使用できなくなります。

32 ビット演算を使用する GR32 用の代替ポリゴン描画ライブラリはありますか?