いつもお世話になっています。環境はWindows XP Delphi 6 Personalです。
画像を分割するプログラムを作成していますが、
画像の分割位置を決めるためのカーソルラインの表示方法を教えていただけませんか。
フォームにScrollBoxを貼り付けて、その上にImageコンポーネントを貼り付けて、
Form2.SetViewForm(BMP画像ファイルのフルパスとファイル名);
Form2.ShowModalで表示させています。
マウスの移動についてくる縦線、または横線を表示させる。あたかもマウスの矢印を縦線、横線に変えた感じで。
目的は縦線表示、横線表示を選択して画像の上で分割位置を決めたいのです。
次のようにやってみたのですが、これでは、画面にラインを書いてしまうし、動きもカクカクと動いてしまいます。
procedure TForm2.imgViewMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
Xa:=Trunc(X); Ya:=Trunc(X);
VerticalLine(Xa,Ya);
end;
//縦線を引く
procedure TForm2.VerticalLine(XX,YY:integer);
begin
imgView.Canvas.MoveTo(XX, 0);
imgView.Canvas.LineTo(XX, 高さ);
end;
参考として「画文作文」 http://www.vector.co.jp/soft/dl/win95/net/se119753.html
のラインカーソルにしたいのですが。
よろしくお願いいたします。
その1:Bevelを使う。
その2:Pen.Modeを pmXORに。
Bevel1は横線、Bevel2は縦線の形にして・・・
procedure TForm1.FormCreate(Sender: TObject);
begin
Bevel1.Enabled := False;
Bevel2.Enabled := False;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Bevel1.Top := Image1.Top + Y;
Bevel2.Left := Image1.Left + X;
end;
ananさん、deldelさん、
お盆帰省でお礼が遅くなりました。ありがとうございました。
初めて画像処理のプログラムに挑戦しますが、まだ、初歩的な部分が、何が基本かがわからないレベルです。今後ともよろしくお願いします。
さっそくこれらのキーワードが解りましたので、参考資料など集めて、これをベースにしばし勉強します。またわからないときは教えてください。
ありがとうございました。
> 参考として「画文作文」 http://www.vector.co.jp/soft/dl/win95/net/se119753.html
これ使ってみましたが、縦でも横でも線を置こうとしたら、CPU使用率100%になり、ちょっと不快。
まさかタイマー0.01秒単位(数字は適当)で、マウスカーソル位置拾って描画とかしているんだろうか?
さて本題
Bevelじゃなく、Shapeを使う例
procedure TForm1.FormCreate(Sender: TObject);
begin
Shape1.Top := 0;
Shape1.Height := Image1.Height;
Shape1.Width := 1;
Shape2.Left := 0;
Shape2.Height := 1;
Shape2.Width := Image1.Width;
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Shape1.Left := X;
Shape2.Top := Y;
end;
時々、カクカクしちゃう(笑)
これ、結構簡単そうに見えて意外と難しいですよ。
てなわけで需要も結構ありそうなのでコンポーネント作りました。
良かったら使ってください。
ビットマップ専用スクロールボックス(おまけ機能付き)
http://hp.vector.co.jp/authors/VA015390/delphi/ScrollBMPBox001.zip
ゴリの妹 、もにゃさん、ご指導ありがとうございます。
何かヒントはないかと本日掲示板を訪問したらありがたい追加返事を発見しました。
いま、必死にやっているのですが、意外と難しいですね。
見た目は、汎用ルーチンみたいですが、参考資料も少ないです。
ゴリの妹さん
なるほど、あの例は100%のCPU使用率ですね。気づきませんでした。
異常といえなくもないですね。それだけ無理しているのかも。
もにゃさん ありがたく試させていただきます。
ありがとうございました。
ツイート | ![]() |