掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TBitMap.ScanLineへ意図通り入力するには? (ID:26102)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Delphi6 Personal,Windows2000の環境です。 TBitMapの一部の色をTBitmap.ScanLineを使用して、別の色に置き換えようとしています 。 現在、目的は達成しましたが、今ひとつ仕組みが良くわからないので質問させて頂きます。 私は、グラフィック関係を扱うのは、これが初めてですので、用語等、不適切かもしれま せんがよろしくお願いします。 TBitmap.ScanLineへのアクセス方法としては、 ヘルプのTBitmap.ScanLineの例において、PByteArrayへ" P[x] := y "というように直接 カラー値を指定する方法(以下 TColor直接方式)と http://madia.world.coocan.jp/delphi/Win32API/getcolorcount.htmのように TBitmap.ScanLineに対して、入力された値をG,R,Bの各要素に分解して指定する(ポインタ 型配列は不要)方法(以下 RGB変換方式) の二つがあるようで、私が調べたところでは、後者の方法で処理されているものばかりの ようです。 調べている過程で、PixelFormatとScanLineへの割り当てのポインタ型配列のサイズの組 合せで色々な結果になることを知りましたが、いまいち、仕組みが理解できません。いく つかの結果について説明していただけるとありがたいです。 1.TColor直接方式、(PixelFormatサイズ < ポインタ型配列のサイズ)で縞模様 ex. pf1bit & PByteArray 2.TColor直接方式、(PixelFormatサイズ > ポインタ型配列のサイズ)で描画領域が半分や 1/4?になったりする。 ex. pf24bit & PByteArray 3.TColor直接方式、(PixelFormatサイズ = ポインタ型配列のサイズ)で一色のベタ塗りと なりますが、色はやはり違います。pf32bit & PIntegerArrayでは、16進数表示でのR,Bの 数値が逆になっているようです。その他の組合せの場合には、入力値と結果のカラー値の 関連性は良くわかりません。 4.RGB変換方式のpf24bit方式のみが正しく描画できるのは、TRGBColorの設定と関連があ りそうですが、他のPixelFormatで正しく描画するためのTRGBColorの設定とは? 5.RGB変換方式で、PixelFormatがpf16bit以下では、画像の下方の模様が変化している。 ex. pf1bitでは特に顕著 6.RGB変換方式で、pf32bitでは描画が3/4程度になる(数字的にはありそうですが..)。 で、こういったことを調べるための簡単なツールを作りましたので、それを次のスレに掲 載します。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.