비트맵에 그린다음 Image에 할당하는 대신 Image.Canvas 에 직접 그리면 됩니다.
Milky Way 님이 쓰신 글 :
: 우선 답변에 감사드립니다.
:
: 제가 할려는 것은 이미지를 불러와서, 그 위에 선그리기나 글씨쓰기 등 각종 작업을 한 후
: 이를 다시 저장하려고 합니다.
:
: 그런데, 페인트 박스는 그림을 그리고 나서, 다른화면에 가려지게 되면, 가려졌던 부분이 자동으로 복구되지가 않는데,
: 어떻게 해야 되죠?
: 그리고 저장은 어떻게 하는거죠?
:
: 방법을 알려주시면 감사하겠습니다.
: 책은 아무리 봐도 그런 내용이 없네요...ㅠ.ㅠ
:
:
:
: 유영인 Cuperido 님이 쓰신 글 :
: : 델파이 4버젼 이상에선가부터 TImage 컴포넌트가 자동으로 Refresh가 되게 되었습니다.
: : 그래서, OnPaint 메시지를 따로 처리를 안해줘도 되는데 반해, 계속 다시 그리기 때문에
: : 깜빡 거림 현상이 나타납니다.
: :
: : 가장 쉬운 방법은 TPaintBox를 사용하는 것입니다. :)
: :
: :
: : cuperido
: :
: : Milky Way 님이 쓰신 글 :
: : : 안녕하세요?
: : : 델파이 초보입니다.
: : :
: : : 이미지의 팔레트에 Mousemove 이벤트시 lineto 메소드로 그림을 그리도록
: : : 프로그래밍 했는데요, 화면떨림 현상이 너무 심해서 쓸 수 없을 정도입니다.
: : :
: : : 게시판에 다른분들이 쓰신 글을 보니
: : : 아래와 같이 하라고 되어 있더군요.
: : :
: : : DoubleBuffered := True;
: : :
: : : 그런데 이걸 추가해도 마찬가지 입니다.
: : :
: : : 어떻게 해야 이미지 깜빡임없이 선을 그릴 수 있을까요?
: : : 고수님들의 답변 기다리겠습니다.
: : :
: : : ------------------------------------------------------------------
: : : procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
: : : Y: Integer);
: : : begin
: : : DoubleBuffered := True;
: : : if Drawing = True then
: : : begin
: : : Bmp.Canvas.Pen.Width := StrtoInt(TxtLineWidth.Text);
: : : with Bmp.Canvas do
: : : begin
: : : MoveTo(MovePt.X,MovePt.Y);
: : : LineTo(X,Y);
: : : end;
: : : Image1.Picture.Assign(bmp);
: : : end;
: : : MovePt := Point(x,y);
: : :
: : : end;
|