Q&A

  • [질문]image1에는 그림파일을 하나 넣고 투명으로 image2를 겹쳐 놓고 image2에 그림그릴때
그림파일을 불러와서 원하는 위치에 위에 글씨나 도형을 출력하는데요

image1에는 그림파일을 하나 넣고 투명으로 image2를 겹쳐 놓고

image2.canvas에 마우스 클릭 위치에 글씨나 도형을 출력했는데

어떤 경우에  image2.canvas의 내용을 한번에 지우려면 어떻게 하나요?

또 제가 다음처럼 코딩을 했는데 같은 그림인데 두 폼에서 글씨 위치랑 크기가 다르게

나타나거든요.  왜 그럴까요? 도움 말씀 부탁드립니다.  이미지 작업은 처음이라서......

procedure TFImagePosition.Draw(name,x0,y0:string);
var
x,y,x1,y1,x2,y2:integer;
begin

  x := StrToInt(x0);
  y := StrToInt(y0);

    x2 := round((x* FImageinfo.Image2.Width)/FMain.Image2.Width);
    x := x2;
    y2 := round((y* FImageinfo.Image2.height)/FMain.Image2.height);
    y := y2;
    x1 := x+FMain.Image2.Canvas.TextWidth(name)+4;
    y1 := y+FMain.Image2.Canvas.TextHeight(name)+4;
    FImageinfo.Image2.Canvas.Font.Size :=  FMain.Image2.Canvas.Font.Size;
    FImageinfo.Image2.Canvas.Font.Color := clRed;
    FImageinfo.Image2.Canvas.Pen.Color := clRed;
    FImageinfo.Image2.Canvas.Pen.Width := 4;
    FImageinfo.Image2.Canvas.Ellipse(x-1,y-1,x+1,y+1);
    FImageinfo.Image2.Canvas.Rectangle(x+3,y+3,x1,y1);
    FImageinfo.Image2.Canvas.TextOut(x+4,y+4,name);
    

end;
3  COMMENTS
  • Profile
    홍성락 2008.05.30 02:30
    모두 지우는건 Image2.Canvas.FillRect(Image2.Canvas.ClipRect); 이렇게 하시되 Image2.Canvas.Brush의 Color , Style를 잘 주시면 될거 같구요.
    Image1과 Image2의 Canvas위치(좌표)가 틀린경우는 AutoSize나 Stretch를 확인해보세요.
    만약 Stretch를 그림이 있는 Image1에 주었다면 실제 이미지 크기에 비례해서 작아지든 커지든 할겁니다.
    크기야 상대적 비율로 주면 되는데 폰트 크기까지 보기는 곤난합니다,
    Image3늘 만들어 둘을 합성하게 하시는게 좋을 듯합니다
  • Profile
    임정미 2008.05.31 10:01
    감사합니다.
    image1,image2의 Stretch 속성을 모두 false로 바꾸고 했더니
    말씀대로 좌표는 같게 나옵니다.
    근데 이미지3를 만들어 둘울 합성한다는게 무슨말인지 모르겠습니다.
  • Profile
    홍성락 2008.06.01 06:50
    아~예. 해결되었다니 다행입니다, 마지막 말한게 혼돈되시나보네요. 뭐든 방법은 여러가지로 해결할 수 있어요. 자료실에 이미지로 회전,자르기등 예제가 있거든요, 즉 Stretch한 이미지도 원본과는 다르지만 축소해서 제3의 image에 넣으면 2번과 같은 SIZE가 되게 한다는 등...보는 컴포넌트 계산시 쓰는 안보이는 콤포넌트등으로 해결하는 방안도 있다는겁니다. 자료실에 이미지관련 소스를 많이 보세요. 수고하십시요.
    • 김상진
    • 2008.06.04 21:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 22:59
      MySQL_Front 의 버전이 설치하신 MySQL 서버와 호환이 안되는 경우 같습니다.
    • 석주현
      2008.06.04 23:33
      위의 문제점을 해결하기 위해서는 <!--CodeS--> 1. 모든 Client 프로그램을 4.1이상으로 업그...
    • 이정욱
      2008.06.04 21:19
      코드싸인은 델파이나, C++ 이나 VB나... 기타 등등의 EXE나 DLL을 뱉어내는 개발툴에서 모두 같습니다. ...
    • 이정욱
      2008.06.04 10:02
      흠.. 저는 되었던 것 같습니다. 저도 ExpressBarSuite를 사용했는데, 저번에 진행했던 프로젝트가 MDI...
    • 루단스
      2008.06.04 18:03
      ㅎㅎ 감사합니다. 되는군요. 역시 제가 잘 못 사용했네요. 웰케 바보스러운쥐...ㅜ.ㅜ DockSite의 Au...
    • 이정욱
      2008.06.04 23:03
      델파이 2007 기준입니다. Component 메뉴에서, Import Library -> Import ActiveX Control -> 그리고....
    • 홍성락
    • 2008.06.04 02:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.04 23:04
      헉.. 답변 하셨었네요 ㅋ 가능하면 코멘트로 달아주세요 ^^; 발급되는 포인트는 같습니다 ^^
    • 홍성락
      2008.06.05 00:17
      예 알겠습니다. 코멘트가 보는거나 검색에 용이하지요. 첨부자료가 없으면 애용하겠습니다. *잠깐 붙임...
    • 석주현
      2008.06.04 00:21
      <!--CodeS--> cbbTest.Items.NameValueSeparator := ':'; cbbTest.Items.Values['00'] := '...
    • 공성환
      2008.06.04 02:53
      cbbTest.Items.NameValueSeparator 요넘이 델버젼 몇부터인가요? 작년까지 델3 올해 델4쓰고있어여 ㅠ...
    • 석주현
      2008.06.04 10:18
      아 그러시군요. 음 전 요즘 7.0을 쓰고 있습니다. 몇년 전까지 5.0을 썼었고요.. 아 하위 버젼에 ...
    • 공성환
      2008.06.04 19:42
      델4는 다덜 별루라고 하고... 델5는 쓸만하다고 하는데... 도대체 난 언제쯤 상위버젼 써불수 있을까... ...
    • phono
      2008.06.04 20:18
      또 다른 방법은 조금 고통스런 노가다 필요하지만.. for i:=0 to ComboBox1.ComboBox1.items.Cou...
    • 이정욱
      2008.06.02 22:14
      공장 자동화 쪽으로는 거의 델파이가 독보적(?) 이라고 할 수 있을 정도로 점유율이 높습니다. 제 생...
    • 이성훈
      2008.06.02 22:32
      음...일단 회사에서 쓰는 주력언어을 먼저 배우시는게 좋지 않을까요? 어차피 회사에서도 재활용이 용...
    • phono
      2008.06.04 01:59
      공장자동화 FA 라면 당근 델파이 강추 합니다. 델파이는 초기 버전때 부터 한솔제지등 굵직굵직한 프로...
    • 공호준
      2008.06.04 18:23
      동감합니다. 속도면에 VB보다 좋더군요(아주). http://fadelphikorea.com/ 사이트을 활용하시면 될것 같...
    • 화이팅
    • 2008.06.02 19:40
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.06.02 22:05
      ModalResult에 값이 설정되면 모달창은 닫히게 됩니다. 이게 모달의 특성이죠... bbt_Login버튼에 Modal...
    • 이정욱
      2008.06.02 22:08
      몇가지 방법이 있습니다. 일단 암호가 틀렸을 경우 로그인 폼의 ModalResult 를 안주면 괜찬습니다. ...
    • 이정욱
      2008.06.02 22:09
      헛... 최용일님께서 동일한 답변을 같은시간에 ㅋ ㅎㅎ 그래도 지우지 않으렵니다 ㅋㅋ
    • 화이팅
      2008.06.03 04:15
      감사합니다~ 이해하기 쉽게.. ^^ 많은 도움 되었습니다
    • 공성환
      2008.06.02 18:20
      SELECT* FROM PROF_LEVEL ORDER BY LEVNAME 요기에서 SELECT* 요넘이 붙어있는것 같은데요... 이거 아...
    • 화이팅
      2008.06.02 19:51
      SELECT * 을 띄웠는데도 문제가 생기네요.. SQL 쿼리에 값이 없다고 합니다.. 첨부파일 올릴테니 아시...
    • 공성환
      2008.06.02 20:22
      db커넥션 하는곳에서 잘못된거 아닌가요? 디자인모드에서 쿼리콤포넌트에 위에 쿼리 넣어주시고 active ...
    • 화이팅
      2008.06.02 20:40
      아... 고쳐졌습니다~ 순서가 바뀌니 에러나 뜨네요.. ZZOM2님 너무 감사합니다^^
    • 권용민
    • 2008.06.01 21:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.06.02 16:21
      음 마우스로 그린다는 게 특정 Satate 에서 마우스 왼쪽 버튼 클릭 메시지 처리와 마우스 무브 메시지 처...
    • 신철우
    • 2008.06.01 01:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.06.01 06:33
      초기화를 해서 할수도 있지만 이런 방법도 있습니다. type DirectoryType = (_WINDOWS, _TEMP, _...
    • 박세철
    • 2008.05.31 19:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 신민철
    • 2008.05.31 10:18
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 공성환
      2008.05.31 18:46
      쿼리를 작성시 ORDER BY 해서 추출해서 추가시키면 되는거 아닌가요? 쿼리가 여러개라면 우선 추출된...
    • 구창민
      2008.05.30 21:30
      안녕하세요.. DB에서 값을 가져올때 총건수를 확인해 보세요... 그후, 그리드의 RowCount 를 총건수에 ...
    • 홍성락
      2008.05.30 21:59
      위의 소스를 보면 데이타배열(lv_ID,lv_NM)은 i가 0에서 시작되고 Cells은 i는 1에서 시작되네요. for문...
    • 천천히
    • 2008.05.30 22:05
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 화이팅
    • 2008.05.30 03:51
    • 5 COMMENTS
    • /
    • 0 LIKES
    • dbwrite
      2008.05.30 05:28
      combobox item인가 거기에다 값넣으시고(문자) list 콤포넌트 써서 (코드) 입력후 combo선택시 index가져...
    • 이정욱
      2008.05.30 08:08
      items.values 에 넣지 마시고... items.clear; 하신후, items.add 하세요. 또는 그냥 items.text 에다...
    • 공성환
      2008.05.30 19:34
      아래코드 참조하시면 도움될까요? <!--CodeS--> unit Unit1; interface uses Windows, ...
    • 공성환
      2008.05.30 19:38
      콤보박스가 디비룩업콤보처럼 코드,명을 같이 쓸수가 없을거예요... 저도 콤보3처럼 사용많이 했어여.....
    • 화이팅
      2008.05.31 03:00
      아.. 다들 정말 감사합니다. 이제 조금씩 이해 되는거 같아요... 정말 답답했는데.. 너무 감사합니다^^
    • 양선호
    • 2008.05.30 02:31
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.05.30 20:43
      New -> Packages 로 패키지를 하나 만듭니다. 그리고 그 패키지 파일에 컴포넌트 파일을 추가 합니다....
    • 이정욱
      2008.05.30 23:15
      컴파일 속도는.. 빠를텐데요.. 2006 이라고 해서 컴파일속도가 느려지진 않았습니다. 컴파일 옵션중에...
    • 이은주
      2008.09.01 18:35
      저도 2007 을 사용하고 있는데 에전에 7 쓸때와 비교하면 거의 5 배 이상 늦군요. warning 을 제거하면 ...
    • 임정미
    • 2008.05.30 00:52
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2008.05.30 02:30
      모두 지우는건 Image2.Canvas.FillRect(Image2.Canvas.ClipRect); 이렇게 하시되 Image2.Canvas.Brush의 ...
    • 임정미
      2008.05.31 10:01
      감사합니다. image1,image2의 Stretch 속성을 모두 false로 바꾸고 했더니 말씀대로 좌표는 같게 나...
    • 홍성락
      2008.06.01 06:50
      아~예. 해결되었다니 다행입니다, 마지막 말한게 혼돈되시나보네요. 뭐든 방법은 여러가지로 해결할 수 ...