Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
그림 그리기는 어떻게,,,
그림을 그릴려고 하는데요, 비트맵을 선언해서 해야 하나요 아니면
캔버스를 선언해서 해야하나요?
캔버스에도 비트맵이 있고 비트맵에도 캔버스가 있던데, 잘 모르겠더라구요.
둘다 상관 없나요?
그리고요, 직선은 그릴수 있는데, 곡선은 어떻게 하면 그릴수 있는지 궁금 합니다.
책을 봐도 곡선 그리는것은 없던데,,,
베지어 함수가 있긴 한데, 제가 쓸줄몰라 직선밖엔 안그려 지네요.
곡선 그리는법좀 알려 주세요.
1
COMMENTS
김영대
•
1999.08.11 00:17
초보델피언 께서 말씀하시기를...
> 그림을 그릴려고 하는데요, 비트맵을 선언해서 해야 하나요 아니면
> 캔버스를 선언해서 해야하나요?
> 캔버스에도 비트맵이 있고 비트맵에도 캔버스가 있던데, 잘 모르겠더라구요.
> 둘다 상관 없나요?
>
> 그리고요, 직선은 그릴수 있는데, 곡선은 어떻게 하면 그릴수 있는지 궁금 합니다.
> 책을 봐도 곡선 그리는것은 없던데,,,
> 베지어 함수가 있긴 한데, 제가 쓸줄몰라 직선밖엔 안그려 지네요.
> 곡선 그리는법좀 알려 주세요.
>
// 아래의 Canvas를 Bitmap.Canvas 로 바꾸어서 사용해 보세요
unit Draw1f;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
var
Count, Current, Step: Integer;
R: TRect;
begin
// ClientRect는 Rect(0, 0, ClientWidth, ClientHeight) 와 동일한 효과
R := ClientRect;
InflateRect(R, -10, -10); // R영역을 감소한다
{폼의 바탕을 색칠한다}
Canvas.Brush.Color := clYellow;
Canvas.Pen.Color := clBlack;
Canvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom);
{폼에 수평선들을 그린다}
Step := 15;
Current := Succ(Step);
Canvas.Pen.Color := clLime;
while Current < R.Bottom do
begin
Canvas.MoveTo(Succ(R.Left), Current);
Canvas.LineTo(Pred(R.Right), Current);
Inc(Current, Step);
end;
{폼에 수직선들을 그린다}
Step := 3;
Current := 85;
Canvas.Pen.Color := clRed;
for Count := 1 to 2 do
begin
Canvas.MoveTo(Current, Succ(R.Top));
Canvas.LineTo(Current, Pred(R.Bottom));
Inc(Current, Step);
end;
{Ellipse을 몇개 그린다}
with Canvas do
begin
Pen.Color := clBlack;
Brush.Color := clFuchsia;
Ellipse(230,40,360,60);
Brush.Color := clAqua;
Ellipse(200,40,260,90);
Brush.Color := clPurple;
Ellipse(220,20,300,80);
end;
{Rectangle을 몇개 그린다}
with Canvas do
begin
Pen.Color := clBlack;
Brush.Color := clRed;
Rectangle(130,120,230,160);
Brush.Color := clWhite;
Rectangle(100,110,160,140);
Brush.Color := clBlue;
Rectangle(120,100,200,130);
end;
{Polylines을 몇개 그린다}
with Canvas do
begin
Pen.Width := 3;
Pen.Color := clBlack;
PolyLine([Point(230,240),Point(250,200),Point(210,220),
Point(300,160),Point(280,240),Point(230,240)]);
Pen.Color := clFuchsia;
PolyLine([Point(360,230),Point(230,210),Point(260,250),
Point(190,210),Point(240,190),Point(360,230)]);
end;
{글자를 몇개 그린다}
with Canvas do
begin
Brush.Style := bsClear;
TextOut(120,50, 'Ellipses');
TextOut(250,130, 'Rectangles');
TextOut(120,210, 'Polylines');
Brush.Style := bsSolid;
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Invalidate;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
김주영
1999.08.11 13:32
0
COMMENTS
/
0
LIKES
[급한질문]전화접속을 위한 구성요소설치는?..,
구민오
•
1999.08.11 13:11
1
COMMENTS
/
0
LIKES
리치에디터에 html 열어보려면?
고구마
•
1999.08.11 19:18
구민오 께서 말씀하시기를... > 리치에디터로 하드에 깔려 있는 html문서를 열어 보려면 어떻게 해야 하나...
이용일
•
1999.08.11 05:06
3
COMMENTS
/
0
LIKES
리스트박스에서 선택여부
고구마
•
1999.08.11 05:19
이용일 께서 말씀하시기를... > 리스트박스에서 선택이 되었는지 안되었는지..어떻게 알수있나요. > 도움...
이용일
•
1999.08.11 07:19
고구마님께서 말씀하시기를.. > 안녕하세요. > > 말씀한 내용... 잘 되던데요.... > > if ListBox1....
이정욱
•
1999.08.11 10:51
이용일 께서 말씀하시기를... > 고구마님께서 말씀하시기를.. > > 안녕하세요. > > > > 말씀한 내용.....
박인재
•
1999.08.11 04:01
1
COMMENTS
/
0
LIKES
Image + Edit 컴포넌트 만들때..
이정욱
•
1999.08.11 10:55
TImage는 콘트롤을 가질 수 없는 객체 입니다. 즉, Parent로 사용되어질 수 없죠. TImage를 상속받지 마...
이효진
•
1999.08.11 03:35
1
COMMENTS
/
0
LIKES
DBE없이 DB사용하는법 좀...
신인재
•
1999.08.11 20:37
말씀하시는 dll은 dbclient.dll입니다. 이것은 n-tier 어플리케이션을 만들기 위한 클라이언트 모듈입니...
김준년
1999.08.11 03:01
0
COMMENTS
/
0
LIKES
웹에서 컨트롤을 클릭했을때 다른 URL로 ??
이무순
•
1999.08.11 02:54
2
COMMENTS
/
0
LIKES
dao3032.dll 오류
김상호
•
1999.08.14 18:49
이무순 께서 말씀하시기를... > 안녕하세요.... > > 질문: DB를 연결 할 때 C:WINDOWSMsAppsDAODAO3032...
이정욱
•
1999.08.11 11:32
DAO가 제데로 설치 되지 않았나 보군요. 아래 파일을 찾을 수 없다면 그 파일이 하드디스크에 없는것이...
초보델피언
1999.08.11 01:05
0
COMMENTS
/
0
LIKES
[재질문] 베지어는 어케... ^^;
정연섭
•
1999.08.11 01:02
1
COMMENTS
/
0
LIKES
Alt 및 F10의 기능을 제한하려면..
박흥태
•
1999.08.11 01:31
정연섭 께서 말씀하시기를... > 뜻하지 않는 기능때문에 난관에 접했습니다. > 저는 평션키(12개)를 나름...
초보델피언
•
1999.08.11 00:39
1
COMMENTS
/
0
LIKES
베지어곡선 그리기
김영대
•
1999.08.18 00:13
초보델피언 께서 말씀하시기를... > 아래 김영대님 답변 무지 감사 합니다. > > 그런데요, 베지어 곡선...
임정래
1999.08.11 00:24
0
COMMENTS
/
0
LIKES
델파이에서 디렉터화일, 플래쉬화일 사용법
고구려
•
1999.08.10 23:48
1
COMMENTS
/
0
LIKES
F9키를 누르면 시스템이 다운되어 버려요..
발도제
•
1999.08.11 00:44
고구려 께서 말씀하시기를... > 간단한 프로그램을 작성한뒤 실행키를 누르고 나면 즉 F9키를 누르고 나면...
한근수
•
1999.08.10 23:42
2
COMMENTS
/
0
LIKES
[긴급]update 문 좀 가르쳐주세요.
제임스딘
•
1999.08.11 02:37
한근수 께서 말씀하시기를... > A table > ----------------------------------- > City Size W...
제임스딘
•
1999.08.11 02:42
제임스딘 께서 말씀하시기를... > 한근수 께서 말씀하시기를... > > A table > > ---------------------...
초보델피언
•
1999.08.10 22:30
1
COMMENTS
/
0
LIKES
그림 그리기는 어떻게,,,
그림을 그릴려고 하는데요, 비트맵을 선언해서 해야 하나요 아니면 캔버스를 선언해서 해야하나요? 캔버스에도 비트맵이 있고 비트맵에도 캔버스가 있던데, 잘 모르겠더라구요. 둘다 상관 없나요? 그리고요, 직선은 그릴수 있는데, 곡선은...
김영대
•
1999.08.11 00:17
초보델피언 께서 말씀하시기를... > 그림을 그릴려고 하는데요, 비트맵을 선언해서 해야 하나요 아니면 >...
김병극
1999.08.10 22:29
0
COMMENTS
/
0
LIKES
시리얼포트로 화일전송프로그램에 대해서..
todm
1999.08.10 22:08
0
COMMENTS
/
0
LIKES
wav file을 동시에 open하려면...
김미정
•
1999.08.10 21:22
1
COMMENTS
/
0
LIKES
엔터키를 공백으로....
구창민
•
1999.08.10 23:31
김미정 께서 말씀하시기를... > 공부를 하다가 문제가 있어 이렇게 질문을 올립니다. > 아무나 아시는 분...
이현철
•
1999.08.10 20:43
1
COMMENTS
/
0
LIKES
Memo 컴포넌트 동적생성시 ..
구창민
•
1999.08.10 22:43
이현철 께서 말씀하시기를... > 안녕하세요. > 메모의 내용을 스트링 배열에 넣고 스트링 배열에 저장된 ...
최성대
•
1999.08.10 20:33
1
COMMENTS
/
0
LIKES
SMTP에 대하여
구창민
•
1999.08.10 23:02
최성대 께서 말씀하시기를... > 안녕하십니까? > > 저는 지금 TNMSMTP를 사용하여 메일을 보내는 프로...
발도제
1999.08.10 19:38
0
COMMENTS
/
0
LIKES
프린트시 태스크바 우측에 tray-icon으로 프린터 모양의 아이콘이....
초보델피언
1999/08/10 22:30
Views
332
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 그림을 그릴려고 하는데요, 비트맵을 선언해서 해야 하나요 아니면
> 캔버스를 선언해서 해야하나요?
> 캔버스에도 비트맵이 있고 비트맵에도 캔버스가 있던데, 잘 모르겠더라구요.
> 둘다 상관 없나요?
>
> 그리고요, 직선은 그릴수 있는데, 곡선은 어떻게 하면 그릴수 있는지 궁금 합니다.
> 책을 봐도 곡선 그리는것은 없던데,,,
> 베지어 함수가 있긴 한데, 제가 쓸줄몰라 직선밖엔 안그려 지네요.
> 곡선 그리는법좀 알려 주세요.
>
// 아래의 Canvas를 Bitmap.Canvas 로 바꾸어서 사용해 보세요
unit Draw1f;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormPaint(Sender: TObject);
var
Count, Current, Step: Integer;
R: TRect;
begin
// ClientRect는 Rect(0, 0, ClientWidth, ClientHeight) 와 동일한 효과
R := ClientRect;
InflateRect(R, -10, -10); // R영역을 감소한다
{폼의 바탕을 색칠한다}
Canvas.Brush.Color := clYellow;
Canvas.Pen.Color := clBlack;
Canvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom);
{폼에 수평선들을 그린다}
Step := 15;
Current := Succ(Step);
Canvas.Pen.Color := clLime;
while Current < R.Bottom do
begin
Canvas.MoveTo(Succ(R.Left), Current);
Canvas.LineTo(Pred(R.Right), Current);
Inc(Current, Step);
end;
{폼에 수직선들을 그린다}
Step := 3;
Current := 85;
Canvas.Pen.Color := clRed;
for Count := 1 to 2 do
begin
Canvas.MoveTo(Current, Succ(R.Top));
Canvas.LineTo(Current, Pred(R.Bottom));
Inc(Current, Step);
end;
{Ellipse을 몇개 그린다}
with Canvas do
begin
Pen.Color := clBlack;
Brush.Color := clFuchsia;
Ellipse(230,40,360,60);
Brush.Color := clAqua;
Ellipse(200,40,260,90);
Brush.Color := clPurple;
Ellipse(220,20,300,80);
end;
{Rectangle을 몇개 그린다}
with Canvas do
begin
Pen.Color := clBlack;
Brush.Color := clRed;
Rectangle(130,120,230,160);
Brush.Color := clWhite;
Rectangle(100,110,160,140);
Brush.Color := clBlue;
Rectangle(120,100,200,130);
end;
{Polylines을 몇개 그린다}
with Canvas do
begin
Pen.Width := 3;
Pen.Color := clBlack;
PolyLine([Point(230,240),Point(250,200),Point(210,220),
Point(300,160),Point(280,240),Point(230,240)]);
Pen.Color := clFuchsia;
PolyLine([Point(360,230),Point(230,210),Point(260,250),
Point(190,210),Point(240,190),Point(360,230)]);
end;
{글자를 몇개 그린다}
with Canvas do
begin
Brush.Style := bsClear;
TextOut(120,50, 'Ellipses');
TextOut(250,130, 'Rectangles');
TextOut(120,210, 'Polylines');
Brush.Style := bsSolid;
end;
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Invalidate;
end;
end.