이미지 드래그 질문인데요..
form1에 image1, image2를 두고서 image1에 이미지를 불러왔습니다,
(각 버튼을 이용해서 opendialog로)
그리고 image2에 이미지를 불러와서 textout이용해서 글자를 적었구요..
그 다음에 이 image2를 드래그해서 image1의 원하는 곳에 올려놓았습니다.
근데 저장을 하면 image1에 올려놓은 image2의 이미지는 저장이 안되고 image1만 저장이 됩니다.
왜 그런지 답변 부탁 드립니다.
openpicturedialog1, savepicturedialog1, button1(image2의 이미지 불러오는 버튼) , button2(image1의 이미지 불러오는 버튼), button3(저장버튼)
<!--CodeS-->
procedure TForm1.Image2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
Var
Pt : TPoint;
begin
GetCursorPos( pt );
pt := ScreenToClient( pt );
if ssLeft in Shift then
with Sender as TControl do
SetBounds( Pt.x - Form1.Left , Pt.Y - Form1.Top ,Width,Height);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
image1.Visible := true;
if OpenPictureDialog1.Execute then
image1.picture.loadfromfile( OpenPictureDialog1.FileName )
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if savePicturedialog1.execute then
// image1.picture.bitmap.savetofile(savedialog1.filename);
image1.picture.savetofile(savePicturedialog1.filename);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
image2.picture.loadfromfile( OpenPictureDialog1.FileName );
Image2.Canvas.Font.Name := 'Arial';
image2.Canvas.font.Size := 30;
Image2.Canvas.Font.Color := clpurple;
Image2.Canvas.TextOut(110,120,DateToStr(Now));
Image2.Canvas.Brush.Style := bsClear;
end;
<!--CodeE-->
image3.canvas.copyRect(Rect(image3.left, image3.top, image3.width, image3.height),
image1.Canvas, Rect(0,0, 649, 809));
image3.Canvas.CopyRect(Rect( (Image2.Left- Image1.Left),(Image2.Top- Image1.Top),
(Image2.Left- Image1.Left)+image2.Width ,
(Image2.Top- Image1.Top)+image2.Height ) ,
image2.Canvas, Rect(0,0, 185, 129));
<!--CodeE-->
일단 답변 정말 감사합니다. 답변을 보고나서 위와같이 코딩을 했는데요...
문제는 image1,image2에서 stretch를 true로 했거든요..
불러오는 image의 크기를 image컴포넌트 크기에 맞춰서요..
근데 문제는 image3에 복사를 하면 원래 image1,2의 크기로 나와서 일부분만 보여지게 되는데..
이 경우는 어떻게 처리해야 할까요??
자꾸 물어봐서 죄송하네요..ㅜ.ㅜ;;