(A,B,Cは画像)
A君から見た場合 B君から見た場合
↓ ↓
A B C
C B A
という状態にしたいのですが.つまりテーブル越しに向かい合ってる環境を作りたいんです.
しかし,画像まで反転してしまうと相手から見た場合,文字まで反転してしまうので読みづらくなってしまうんで,位置だけを反転して画像自身は相手に見やすいように180度回転させたいのですが,どうしたらいいでしょうか?
ここでも見てみて
http://junki.lix.jp/delphigr.html
http://madia.world.coocan.jp/delphi/Effect/index.htm
(A,B,Cは画像)
A君から見た場合 B君から見た場合
↓ ↓
A B C
C B A
という状態にしたいのですが.つまりテーブル越しに向かい合ってる環境を作りたいんです.
しかし,画像まで反転してしまうと相手から見た場合,文字まで反転してしまうので読みづらくなってしまうんで,位置だけを反転して画像自身は相手に見やすいように180度回転させたいのですが,どうしたらいいでしょうか?
しかも動画をリアルタイムに以上のようにしたいのですがなにからしていいのかがわからなくてよろしければ教えてください
いまいちよく分からないのですが
下記HPのソース参考になりますか?
http://delfusa.main.jp/delfusafloor/archive/www.nifty.ne.jp_forum_fdelphi/samples/00097.html
画像の180度回転は iAngle を指定してください。
位置の反転は画面サイズと対象の画像座標の計算で導き出せる?
的はずれの可能性大・・・
こんな感じですかね?
180°,90°回転は三角関数を使うまでもありません。
これはコントロールを回転させてますが画像の回転は画像処理で行ってください。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, Contnrs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private 宣言 }
procedure N1Click(Sender: TObject);
public
{ Public 宣言 }
Buttons: array [0..2] of TButton;
List:TList;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
MainMenu1: TMainMenu;
N1: TMenuItem;
i:Integer;
begin
MainMenu1:=TMainMenu.Create(Self);
N1:=TMenuItem.Create(MainMenu1);
N1.Caption:='反転';
N1.OnClick:=N1Click;
List:=TList.Create;
for i:=0 to Length(Buttons)-1 do
begin
Buttons[i]:=TButton.Create(self);
Buttons[i].Parent:=self;
Buttons[i].Width:=100;
Buttons[i].Height:=30;
Buttons[i].Caption:='Button ' + inttostr(i);
//反転させるオブジェクトを登録
List.Add(Buttons[i]);
end;
Buttons[0].Left:= (ClientWidth - Buttons[0].Width) div 2;
Buttons[0].Top := 0;
Buttons[1].Left:= 0;
Buttons[1].Top := Buttons[0].Height+20;
Buttons[2].Left:= ClientWidth - Buttons[2].Width;
Buttons[2].Top := Buttons[0].Height+20;
MainMenu1.Items.Add(N1);
end;
procedure TForm1.N1Click(Sender: TObject);
var i:Integer;
begin
//反転ルーチン
for i:=0 to List.Count-1 do
begin
TControl(List.Items[i]).Left:= ClientWidth
- TControl(List.Items[i]).Left
- TControl(List.Items[i]).Width;
TControl(List.Items[i]).Top := ClientHeight
- TControl(List.Items[i]).Top
- TControl(List.Items[i]).Height;
end;
end;
end.
画像の 上下反転・左右反転・180度回転は CopyRect でもできるんだよ?
//180度回転
procedure TForm1.Button1Click(Sender: TObject);
begin
with Image1.Picture.Bitmap do
begin
Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,Width,Height),Image1.Picture.Bitmap.Canvas,Rect(Width-1,Height-1,-1,-1));
end;
end;
//上下反転
procedure TForm1.Button2Click(Sender: TObject);
begin
with Image1.Picture.Bitmap do
begin
Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,Width,Height),Image1.Picture.Bitmap.Canvas,Rect(0,Height-1,Width,-1));
end;
end;
//左右反転
procedure TForm1.Button3Click(Sender: TObject);
begin
with Image1.Picture.Bitmap do
begin
Image1.Picture.Bitmap.Canvas.CopyRect(Rect(0,0,Width,Height),Image1.Picture.Bitmap.Canvas,Rect(Width-1,0,-1,Height));
end;
end;
もにゃさん>プログラムを載せていただいてありがたいのですが,いまいち理解できないのでよろしければ解説していただけないでしょうか?
ツイート | ![]() |