더운 날씨에 수고가 많으시죠... 벌써 8월 이군요...
하시는 일 마다 모두 잘 되시길...
제가 뭘좀 테스트 하고 있는데,, 잘 되질 않아서,,,,
폼에 image(source), RXrichedit, image2, 버튼이 있습니다.. 그리고 savedialog도 하나
source에는 검정색으로 바탕처리된 224*160(크기는 상관없습니다.) 크기의 비트맵 파일을 로드 시켜놓고 있습니다.
그리고 같은 크기의 RXRichedit을 위에 포개지도록 올려놓구요...
source, edit의 크기를 조절하기위해 spineditinteger 2개 사용했습니다..
실행하면 edit에 글씨를 써서 그림파일로 만들려고 합니다.
그런데, source크기 즉 224*160 크기의 그림은 만들어지는데, source와 RXRichedit 그보다 작거나 크게 조정한 후에 저장하면 source 크기의 그림만 만들어 지는데,,
예를 들어 500*500 크기의 bmp파일을 만들려고 하면 어떻게 해야 되는지..
아니면 그보다 작거나.. 더 크게는 못하나요?
크기를 크거나 작게 조절해도 결국 나오는건 source에 깔려있는 그림(검정바탕)크기대로 크기가 결정 되네요.
procedure TForm1.Button1Click(Sender: TObject);
var
Comfirm : Integer;
begin
SaveDialog2.DefaultExt := 'BMP';
SaveDialog2.Title := 'BMP 파일로 저장';
SaveDialog2.FilterIndex := 1;
SaveDialog2.FileName := '';
if SaveDialog2.Execute then
begin
RxRichEdit1Change(self);
source.Picture.Bitmap.SaveToFile(SaveDialog2.filename) ;
RxRichedit1.SetFocus;
end;
end;
procedure TForm1.RxRichEdit1Change(Sender: TObject);
var
DC: hDC;
Cap: TBitmap;
TheRect: TRect;
begin
Cap := Tbitmap.Create;
Cap.Width := RxRichedit1.width;
Cap.Height := RxRichedit1.height;
DC := GetDc(RxRichEdit1.Handle);
Cap.Canvas.Handle := DC;
RxRichEdit1.PaintTo(Cap.Canvas.Handle,Cap.Width,Cap.Height);
Therect := Rect(0,0,RxRichedit1.width,RxRichedit1.height);
image2.Canvas.CopyRect(TheRect,Cap.Canvas,Rect1,0,RxRichedit1.width,RxRichedit1.height));
Cap.Free;
ReleaseDC(RxRichEdit1.Handle,DC);
Source.Canvas.CopyRect(TheRect,image2.Canvas,TheRect);
end;
procedure TForm1.fse1Change(Sender: TObject);
begin
RxRichEdit1.Width := fse1.Value;
image2.Width := fse1.Value;
source.Width := fse1.Value;
// memo1.Lines.Add(inttostr(RxRichEdit1.Width)) ;
end;
procedure TForm1.fse2Change(Sender: TObject);
begin
RxRichEdit1.Height := fse2.Value;
image2.Height := fse2.Value;
source.Height := fse2.Value;
// memo1.Lines.Add(inttostr(RxRichEdit1.Height)) ;
end;