電子書籍の厳選無料作品が豊富!

保存された画像(bmpまたはjpg形式)の指定した座標

(仮に画面中央とします。また、マウスで指定した場所など、座標を設定した後に座標を設定しなおすことはありません。また指定した座標というのは一箇所で良いです。複数あれば、なおよいですが。)

のRGB値を返すにはどうしたらよいでしょうか?
テキストボックスなり、ラベルなりにR、B、G、それぞれの値を出力するのが目標です。

また、Delphiに対して理解が不足しているので、ソースプログラムや参考URLをそのまま載せていただけると嬉しいです。

方法をご存知の方いましたら、是非よろしくお願いします!m(_ _)m

A 回答 (2件)

RGBの分解にレコード型を使ったものと、GetRValue等の関数を使ったものを用意しました。

レコード型の方が高速…なのかな?
コード中のGetRValueの文字の上にキャレットを置き、右クリック→定義の検索を行うと関数の実体が見れます。

画像のある点の色(TColor値)を取得する基本的な方法は、TCanvas.Pixelsです。
高速に行いたい場合はTBitmap.ScanLineを使用します。
ヘルプの「VCLリファレンス」で、TBitmap、TCanvas、TColor、ColorToRGB関数等を調べると良いです。
また、ScanLineについては「ビットマップ,描画」でキーワード検索するとサンプルがあります。


ソースはこちら。
http://pastebin.com/TqHzHgXT
下にある「RAW Paste Data」からすべて選択→コピーしてください。

通常ならユニット丸ごとでなく、せいぜいimplementation部以下を提示すれば十分なのですが、まだDelphiに不慣れなご様子ですので全体をアップしました。

サービスして手順も。
1. Form1にボタン2つを配置。(Button1、Button2)
2. Memoを配置。(Memo1)縦に長めにしておくか、ScrollBarsプロパティをssVerticalに設定。
3. Button1をダブルクリック。(イベントが登録され、イベントハンドラ雛型が自動生成される)
4. 同様にButton2もダブルクリック。
5. ソースをコピーして、Delphiのエディタ画面に貼り付け。内容をすべて置き換えるようにする。


もうひとつの質問も拝見しましたが、画像処理のプログラムを制作中なんですよね?
ちょっと不思議なんですが、RGBの取得方法も分からずによく出来ましたね。
どうやってたんですか?
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

丁寧に教えて頂き、ありがとうございました。

勉強しながら頑張って習得していきたいと思います。

お礼日時:2013/02/05 13:43

Delphi 6 とは懐かしい。



画像を回転する処理で GetPixcel が使われています。
http://www006.upp.so-net.ne.jp/tamakoubou/delphi …

高速化する場合は ScanLine を使います。
http://www.geocities.jp/asumaroyuumaro/program/t …
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

参考にさせて頂きたいと思います。

お礼日時:2013/02/05 13:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!