Q&A

  • PaintBox에 빠르게 그리는 방법 좀...????
안녕하세요!



도저히 제 혼자 해결하기가 뻑차 이렇게 글을 올립니다.



질문내용은



Form에 ScrollBox를 올려놓고 그위에 PaintBox를 또 올려 놓았습니다.



그리고 선을 그리는데.



aposition: array[0..400000] of Tpoint;



aPosition에 값을 집어넣는 부분



Paintbox.canvaas.moveto(0,0);

Paintbox.height := 30000;

Paintbox.width := 30000;



For i := Low( aPosition ) to High( aPosition ) do

begin

PaintBox.canvas.Ellipse( aposition[i].x - 5,

aposition[i].y - 5,

aposition[i].x + 5,

aposition[i].y + 5 );



PaintBox.canvas.lineto( aposition[i].x, aposition[i].y );

end;



선을 다 그리고

한화면에 그림이 다 나오지 않기 때문에

scrollbar를 이동하면 Paint 이벤트에서 다시 그리는데

그 속도가 아 지루하네요.



DIB 를 이용하면 속도가 상당히 빨라 진다고 하던데 PaintBox를 DIB에

적용할려면 어떻게 해야 하나요?



PaintBox에 선과 원을 빠르게 표현할 수 있는 방법을 아시는

고수여러분 많은 지도 편달을 부탁 드립니다.

방법만이라도....



TImage에 그리고 그것을 Paintbox에 옮기려고 하니까

Image 크기가 너무커 리소스 부족인가 뭔가 에러가 나네요!



좋은 방법 부탁 드립니다. 벌써 한달이 다되어 가네요.........



힘들어



감사합니다. 즐프 하세요....



3  COMMENTS
  • Profile
    최용일 2001.09.20 02:45
    안녕하세요. 최용일입니다.



    페인트박스에다가 직접그리시지 마시고 비트맵객체(TBitmap)를 하나 생성해서 거기다가



    그리세요... 그리고 OnPaint이벤트에서 보이는 부분만 Tcanvas.CopyRect이나 BitBlt을



    이용해서 비트맵에서 페인트박스의 캔버스로 옮겨주시면 아주 빠르게 그려질겁니다.



    ^^ 항상 즐코하세요...



    이상수 wrote:

    > 안녕하세요!

    >

    > 도저히 제 혼자 해결하기가 뻑차 이렇게 글을 올립니다.

    >

    > 질문내용은

    >

    > Form에 ScrollBox를 올려놓고 그위에 PaintBox를 또 올려 놓았습니다.

    >

    > 그리고 선을 그리는데.

    >

    > aposition: array[0..400000] of Tpoint;

    >

    > aPosition에 값을 집어넣는 부분

    >

    > Paintbox.canvaas.moveto(0,0);

    > Paintbox.height := 30000;

    > Paintbox.width := 30000;

    >

    > For i := Low( aPosition ) to High( aPosition ) do

    > begin

    > PaintBox.canvas.Ellipse( aposition[i].x - 5,

    > aposition[i].y - 5,

    > aposition[i].x + 5,

    > aposition[i].y + 5 );

    >

    > PaintBox.canvas.lineto( aposition[i].x, aposition[i].y );

    > end;

    >

    > 선을 다 그리고

    > 한화면에 그림이 다 나오지 않기 때문에

    > scrollbar를 이동하면 Paint 이벤트에서 다시 그리는데

    > 그 속도가 아 지루하네요.

    >

    > DIB 를 이용하면 속도가 상당히 빨라 진다고 하던데 PaintBox를 DIB에

    > 적용할려면 어떻게 해야 하나요?

    >

    > PaintBox에 선과 원을 빠르게 표현할 수 있는 방법을 아시는

    > 고수여러분 많은 지도 편달을 부탁 드립니다.

    > 방법만이라도....

    >

    > TImage에 그리고 그것을 Paintbox에 옮기려고 하니까

    > Image 크기가 너무커 리소스 부족인가 뭔가 에러가 나네요!

    >

    > 좋은 방법 부탁 드립니다. 벌써 한달이 다되어 가네요.........

    >

    > 힘들어

    >

    > 감사합니다. 즐프 하세요....

    >

  • Profile
    이상수 2001.09.20 03:28
    최용일님 감사합니다.



    말씀하신대로 실행을 해보았는데



    TBitmap을 생성한후에



    var

    tbm: TBitmap;

    begin

    tbm := tBitmap.Create;

    tbm.Height := 30000;

    tbm.Width := 30000;

    tbm.Canvas.moveto( 0, 0 );

    tbm.Canvas.lineTo( 100,100 );

    tbm.free;

    end;



    이렇게 하니까 "OutOfResources 매개변수가 잘못 되었습니다." 라는 에러 메세지가

    뜨네요?



    아마도 TBitMap의 Size가 너무 크기 때문인것 같아요 크기를 1000정도로 하니까

    실행이 되네요..



    우찌 다른 방법이 없을까요?????????/



    좋은 답변 부탁 드립니다.



    감사합니다.





    최용일 wrote:

    > 안녕하세요. 최용일입니다.

    >

    > 페인트박스에다가 직접그리시지 마시고 비트맵객체(TBitmap)를 하나 생성해서 거기다가

    >

    > 그리세요... 그리고 OnPaint이벤트에서 보이는 부분만 Tcanvas.CopyRect이나 BitBlt을

    >

    > 이용해서 비트맵에서 페인트박스의 캔버스로 옮겨주시면 아주 빠르게 그려질겁니다.

    >

    > ^^ 항상 즐코하세요...

    >

    > 이상수 wrote:

    > > 안녕하세요!

    > >

    > > 도저히 제 혼자 해결하기가 뻑차 이렇게 글을 올립니다.

    > >

    > > 질문내용은

    > >

    > > Form에 ScrollBox를 올려놓고 그위에 PaintBox를 또 올려 놓았습니다.

    > >

    > > 그리고 선을 그리는데.

    > >

    > > aposition: array[0..400000] of Tpoint;

    > >

    > > aPosition에 값을 집어넣는 부분

    > >

    > > Paintbox.canvaas.moveto(0,0);

    > > Paintbox.height := 30000;

    > > Paintbox.width := 30000;

    > >

    > > For i := Low( aPosition ) to High( aPosition ) do

    > > begin

    > > PaintBox.canvas.Ellipse( aposition[i].x - 5,

    > > aposition[i].y - 5,

    > > aposition[i].x + 5,

    > > aposition[i].y + 5 );

    > >

    > > PaintBox.canvas.lineto( aposition[i].x, aposition[i].y );

    > > end;

    > >

    > > 선을 다 그리고

    > > 한화면에 그림이 다 나오지 않기 때문에

    > > scrollbar를 이동하면 Paint 이벤트에서 다시 그리는데

    > > 그 속도가 아 지루하네요.

    > >

    > > DIB 를 이용하면 속도가 상당히 빨라 진다고 하던데 PaintBox를 DIB에

    > > 적용할려면 어떻게 해야 하나요?

    > >

    > > PaintBox에 선과 원을 빠르게 표현할 수 있는 방법을 아시는

    > > 고수여러분 많은 지도 편달을 부탁 드립니다.

    > > 방법만이라도....

    > >

    > > TImage에 그리고 그것을 Paintbox에 옮기려고 하니까

    > > Image 크기가 너무커 리소스 부족인가 뭔가 에러가 나네요!

    > >

    > > 좋은 방법 부탁 드립니다. 벌써 한달이 다되어 가네요.........

    > >

    > > 힘들어

    > >

    > > 감사합니다. 즐프 하세요....

    > >

  • Profile
    최용일 2001.09.21 00:59
    자료실에 TBigBitmapViewer 란 컴포넌트가 있는데 그걸한번 사용해보시죠...



    이상수 wrote:

    > 최용일님 감사합니다.

    >

    > 말씀하신대로 실행을 해보았는데

    >

    > TBitmap을 생성한후에

    >

    > var

    > tbm: TBitmap;

    > begin

    > tbm := tBitmap.Create;

    > tbm.Height := 30000;

    > tbm.Width := 30000;

    > tbm.Canvas.moveto( 0, 0 );

    > tbm.Canvas.lineTo( 100,100 );

    > tbm.free;

    > end;

    >

    > 이렇게 하니까 "OutOfResources 매개변수가 잘못 되었습니다." 라는 에러 메세지가

    > 뜨네요?

    >

    > 아마도 TBitMap의 Size가 너무 크기 때문인것 같아요 크기를 1000정도로 하니까

    > 실행이 되네요..

    >

    > 우찌 다른 방법이 없을까요?????????/

    >

    > 좋은 답변 부탁 드립니다.

    >

    > 감사합니다.

    >

    >

    > 최용일 wrote:

    > > 안녕하세요. 최용일입니다.

    > >

    > > 페인트박스에다가 직접그리시지 마시고 비트맵객체(TBitmap)를 하나 생성해서 거기다가

    > >

    > > 그리세요... 그리고 OnPaint이벤트에서 보이는 부분만 Tcanvas.CopyRect이나 BitBlt을

    > >

    > > 이용해서 비트맵에서 페인트박스의 캔버스로 옮겨주시면 아주 빠르게 그려질겁니다.

    > >

    > > ^^ 항상 즐코하세요...

    > >

    > > 이상수 wrote:

    > > > 안녕하세요!

    > > >

    > > > 도저히 제 혼자 해결하기가 뻑차 이렇게 글을 올립니다.

    > > >

    > > > 질문내용은

    > > >

    > > > Form에 ScrollBox를 올려놓고 그위에 PaintBox를 또 올려 놓았습니다.

    > > >

    > > > 그리고 선을 그리는데.

    > > >

    > > > aposition: array[0..400000] of Tpoint;

    > > >

    > > > aPosition에 값을 집어넣는 부분

    > > >

    > > > Paintbox.canvaas.moveto(0,0);

    > > > Paintbox.height := 30000;

    > > > Paintbox.width := 30000;

    > > >

    > > > For i := Low( aPosition ) to High( aPosition ) do

    > > > begin

    > > > PaintBox.canvas.Ellipse( aposition[i].x - 5,

    > > > aposition[i].y - 5,

    > > > aposition[i].x + 5,

    > > > aposition[i].y + 5 );

    > > >

    > > > PaintBox.canvas.lineto( aposition[i].x, aposition[i].y );

    > > > end;

    > > >

    > > > 선을 다 그리고

    > > > 한화면에 그림이 다 나오지 않기 때문에

    > > > scrollbar를 이동하면 Paint 이벤트에서 다시 그리는데

    > > > 그 속도가 아 지루하네요.

    > > >

    > > > DIB 를 이용하면 속도가 상당히 빨라 진다고 하던데 PaintBox를 DIB에

    > > > 적용할려면 어떻게 해야 하나요?

    > > >

    > > > PaintBox에 선과 원을 빠르게 표현할 수 있는 방법을 아시는

    > > > 고수여러분 많은 지도 편달을 부탁 드립니다.

    > > > 방법만이라도....

    > > >

    > > > TImage에 그리고 그것을 Paintbox에 옮기려고 하니까

    > > > Image 크기가 너무커 리소스 부족인가 뭔가 에러가 나네요!

    > > >

    > > > 좋은 방법 부탁 드립니다. 벌써 한달이 다되어 가네요.........

    > > >

    > > > 힘들어

    > > >

    > > > 감사합니다. 즐프 하세요....

    > > >

    • 나그네
      2001.09.20 23:07
      송영일 wrote: > ora-00942 테이블또는뷰가 존재하지않습니다!!!!!!!!!!!!! 왜 그럴까요?? > > 오라클...
    • 방랑자
      2001.11.01 19:14
      저도 델파이를 직접 해 본 건 이번이 처음이고요... 하지만 이 문제는 이 객체가 진짜로 DB에서 그 유저에...
    • 델사남
    • 2001.09.20 08:38
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 졸리운넘
      2001.09.20 09:31
      1. 프로젝트소스에서 폼의 순서를 바꾼다. 2. Project->Options->forms탭에서 순서를 바꾼다. 어떠케하던...
    • 잠안오는사람
      2001.09.20 10:09
      1. 프로젝트소스에서 폼의 순서를 바꾼다. 2. Project->Options->forms탭에서 순서를 바꾼다. 어떠케...
    • goodman
    • 2001.09.20 07:00
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.09.20 19:15
      방법은 같답니다. SList.Add('PATH='+EXECDIR+'DataBase'); 이렇게 해서 하나의 알리아스를 만드셨듯이 ...
    • 잠안오는사람
      2001.09.20 10:18
      ----------------여기서 부터 잘모르겠거든요 부탁드립니다--------------------------- > > procedure ...
    • 심병화
    • 2001.09.20 05:57
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2001.09.20 11:52
      책보세요 심병화 wrote: > 질문이 있어 도움을 요청합니다. > 간단한 db연동 프로그램을 만드는데 입력 ...
    • 심병화
      2001.09.21 04:08
      이경문 wrote: > 책보세요 > 심병화 wrote: > > 질문이 있어 도움을 요청합니다. > > 간단한 db연동 프...
    • 초보의비애
      2001.09.20 19:18
      어뜩해 wrote: > CashedUpdate를 사용합니다 한번 저장하고 또 저장하면 > " A user transaction is a...
    • 델초보
    • 2001.09.20 02:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 나도 델초보
      2001.09.20 10:29
      델초보 wrote: > 데이타베이스는 오라클을 사용합니다. > 버젼 7에서 817로 Upgrade한후 Query속도가 너...
    • 이상수
    • 2001.09.20 02:33
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.09.20 02:45
      안녕하세요. 최용일입니다. 페인트박스에다가 직접그리시지 마시고 비트맵객체(TBitmap)를 하나 생성해...
    • 이상수
      2001.09.20 03:28
      최용일님 감사합니다. 말씀하신대로 실행을 해보았는데 TBitmap을 생성한후에 var tbm: TBitma...
    • 최용일
      2001.09.21 00:59
      자료실에 TBigBitmapViewer 란 컴포넌트가 있는데 그걸한번 사용해보시죠... 이상수 wrote: > 최용일님...
    • 한철
    • 2001.09.20 01:35
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 초짜
    • 2001.09.20 01:07
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이경문
      2001.09.20 12:21
      thread 생성에는 크게 2가지 관점에서 볼 수 있습니다. 1. CPU performane thrad가 많아진다고 실행이 느...
    • 문상연
    • 2001.09.20 01:05
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2001.09.20 02:39
      안녕하세요. 최용일입니다. uses절에 ActiveX유닛을 추가해주세요... ^^ 항상 즐코하세요... 문상...
    • 문상연
      2001.09.20 07:16
      최용일 wrote: > 안녕하세요. 최용일입니다. > > uses절에 ActiveX유닛을 추가해주세요... > > ^^ ...
    • 최용일
      2001.09.21 04:31
      아마도 IE로 프린트하면 그렇게 하기 힘들거 같군요... 델마당에 하는 방법이 답변으로 달렸네요... ...
    • 이지컴
    • 2001.09.19 23:32
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 쥐 <:( )~
      2001.09.19 23:53
      이지컴 wrote: > > 자꾸 쉬운것만 물어봅니다.(아구 챙피혀..) > > 현금출납장부 테이블이 하나 있...
    • 홍세비
      2001.09.19 23:51
      이지컴 wrote: > > 자꾸 쉬운것만 물어봅니다.(아구 챙피혀..) > > 현금출납장부 테이블이 하나 있...
    • 매일웃자
      2001.09.20 19:49
      ActionList에 이벤트들을 등록하고 Action명을 비교했더니 되더군요. 감사합니다. ^_____^
    • 이채성
      2001.09.20 01:37
      제가 알기로는 이건 불가능 한것으로 알고 있습니다. 만약 필요하시다면 전역변수를 잡아서 클릭이 ...
    • 매일웃자
      2001.09.20 01:47
      잘 읽어보았습니다. 감사합니다. 제가 하려는 작업에 꼭 필요해서 말인데요... 약 100개정도의 메뉴아...
    • 하병준
    • 2001.09.19 23:18
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 사이비쥐 <;(●)~~
      2001.09.20 00:09
      하병준 wrote: > 안녕하세요 제가 질문을 하고자 하는 것은 > > Pos을 사용을 하면 텍스트 파일의 찾...
    • 홍세비
      2001.09.19 23:57
      하병준 wrote: > 안녕하세요 제가 질문을 하고자 하는 것은 > > Pos을 사용을 하면 텍스트 파일의 찾...