Jump to content
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr ×
과거의 기술자료(읽기 전용): https://tech.devgear.co.kr
  • 0

Window VCL 프로그램 과   MULTI-Device 프로그램 에서 TImage 사용의 차이점


이인재

질문

Window VCL 프로그램에서  TImage 를 아래처럼 사용할때는 컴파일에러가  없는데

MULTI-Device 프로그램 에서 만들어 실행시키면 에러가 나오네요.  문제가 무었일까요? 그리고 해결방법은 무었일까요?

알려주시면 감사하겠습니다.

 

procedure TForm1.FormCreate(Sender: TObject);
begin
 with image1 do
  begin
     Canvas.Pen.Color := clRed;
     Canvas.Pen.Style := psDashDot;
     Canvas.MoveTo(0,0);
     Canvas.LineTo(400, 400);
      Canvas.MoveTo(400,0);
     Canvas.LineTo(0, 400);
  end;
end;

이 댓글 링크
다른 사이트에 공유하기

2 answers to this question

Recommended Posts

  • 1

VCL에서 사용하는 컴포넌트는 FMX 에서 사용하는 컴포넌트와 이름이 같아도 메소드와 사용방법이 많이 다릅니다.

VCL에서 많이 사용하였던 Canvas 방식의 드로잉은 제한적으로만 사용 되는데 그 이유는 

FMX 에서는 모든 컴포넌트들이 부모-자식 형태의 구조로 레이어를 쌓아서 사용 할 수 있어 굳이 Canvas 방식의 드로잉이 필요가 없어졌습니다.

파워포인트나 포토샵 처럼 객체들을 레이어로 쌓아서 그리는 방식과 동일 합니다.

 

올려주신 소스 처럼 Image 위에 라인을 그리는 것이 목적이면 

아래와 같이 TLine 을 Image 위에 올리면 되고 정해진 이미지라면

TLIne 사용 대신 다른 Image를 png 이미지(투명배경사용가능)로 기존 이미지위에 Child 객체로 올려도 됩니다.

 

procedure TForm3.Button1Click(Sender: TObject);
var
  myLine : TLine;
begin
  myLine := TLine.Create( Image1 );

  myLine.Parent := Image1;
  myLine.LineType := TLineType.Diagonal;

  myLine.Position.X := 0;
  myLine.Position.Y := 0;

  myLine.Size.Width := 400;
  myLine.Size.Height := 400;
  myLine.Stroke.Color := $FFFF0000;
  myLine.Stroke.Dash := TStrokeDash.DashDot;
end;

 

image.png

이 댓글 링크
다른 사이트에 공유하기

이 토의에 참여하세요

지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.

Guest
이 질문에 답변하기...

×   서식있는 텍스트로 붙여넣기.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   이전에 작성한 콘텐츠가 복원되었습니다..   편집창 비우기

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

중요한 정보

이용약관 개인정보보호정책 이용규칙 이 사이트가 더 잘 작동하기 위해 방문자의 컴퓨터에 쿠키가 배치됩니다. 쿠키 설정 변경에서 원하는 설정을 할 수 있습니다. 변경하지 않으면 쿠키를 허용하는 것으로 이해합니다.