|
올려주신 src는 C++ Builder 설치시 들어 있는
...\Examples\Apps\Canvas\Canvas
와 비슷하군요.
일단 답변 모드로 들어갑니다.
1. 타원 그리기에 대한 답변
Form 크기와 같은 타원을 그리려면 작성하신 FormPaint()를 아래와 같이 바꾸면 됩니다.
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->Ellipse(0, 0, ClientWidth, ClientHeight);
}
2. min()에 대한 답변
min(), max()는 macro로 stdlib.h에 아래와 같이 정의되어 있습니다.
#ifndef max
#define max(__a,__b) (((__a) > (__b)) ? (__a) : (__b))
#endif
#ifndef min
#define min(__a,__b) (((__a) < (__b)) ? (__a) : (__b))
#endif
그러므로 아래의 header file을 첨부하세요.
#include <stdlib.h> // min()을 위해 첨부
#include <math.h> // floor()를 위해 첨부
3. Bitmap 크기에 대한 답변
Bitmap 크기와 상관없이 동일한 크기로 Image를 보여주려면
Image1->Stretch = true;
하면 되며,
Bitmap 크기에 따라 Image의 크기를 변화 시키려면
일단 화면 크기보다 큰 Image는 화면 크기만큼만 보이므로
TScrollBox위에 TImage를 올려 놓은후 Image의 Width와 Height를 Bitmap의 Width 및 Height로
변경해서 사용하면 됩니다.
예>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Image1->Picture->LoadFromFile( "C:\\Windows\\WinNT.BMP" );
Image1->Left = 0;
Image1->Top = 0;
Image1->Width = Image1->Picture->Bitmap->Width; // Image1의 크기를 Bitmap의 크기로 바꿈.
Image1->Height = Image1->Picture->Bitmap->Height;
}
- heredity -
쥬신 님이 쓰신 글 :
: 캔버스에다가 돌아가는 타원을 그릴려고 합니다. 하지만 원하는 값이 나오지가 않아서 올립니다
: 소스를 올릴께요..
: int radius = min(centerY, centerX); 이렇게 하면 작은 값을 준다고 하는데 여기서 min이 어디서 뛰어나온건지 알수 가
: 없군요.
:
: 궁금한게 생겨서요. bitmap을 사용해서 이미지를 불러옵니다. 하지만 이미지의 크기가 항상 같을 수는 없잖아요
: 물론 이미지 크기를 정해있다면 이미지 크기 만큼만 나옵니다. 이미지 화면에 맡게 나오겠죠. 하지만 궁금한것은
: 이미지 크기를 파일로 불러 올때마다 계산해서 이미지 크기에 맡게 화면에 뿌려주고 싶습니다...읽어주셔서 고맙습니다.
|