자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 이미지 StretchDraw문 사용시 글자 깨져 다른 방법 좀 알려주세요?
2018.03.13 09:17
서버에서 이미지를 다운 받아 이미지를 합쳐 하나의 이미지로 만들어 blob data로 저장하는 프로그램입니다.
Draw문을 사용시 이미지가 잘나오나 A4 사이지로 되지않아 StretchDraw문을 사용했으나 이미지가 깨져 글자 식별이 어렵습니다.
알려주시면 감사하겠습니다.~~
procedure HSComImgReport.SaveSignImage(pFilePath, pPatno, pMeddate,
pDocno: String; iFromPage, iToPage: Integer);
const
A4HEIGHT = 1123;
A4WIDTH = 794;
var
Bmp : TBitmap;
Jpeg : TJPEGImage;
lBitmap : TBitmap;
lsFileName : String;
begin
Bmp := TBitmap.Create;
Jpeg := TJPEGImage.Create;
try
iHeight := 0;
for ix:=iFromPage-1 to iToPage-1 do begin
lImage := TImage.Create(nil);
lImage.Stretch := True;
try
lBitmap := TBitmap.Create;
lBitmap.Assign(PageInfo[ix].Bmp);
BMP.Width := A4WIDTH;
BMP.Height := iHeight + A4HEIGHT;
// BMP.Canvas.Draw(0, iHeight, lBitmap); // 이미지가
BMP.Canvas.StretchDraw( Rect(0,iHeight,bmp.Width,bmp.Height), lBitmap );
iHeight := iHeight + A4HEIGHT;
finally
lBitmap.Free;
end;
Jpeg.Assign(BMP);
Jpeg.CompressionQuality := 100;
Jpeg.Compress;
// 파일생성 위치 + 파일명 생성(환자번호+신청일자+서식번호)
lsFileName := pFILEPATH + pPatNo + '_' + pMeddate + '_' + pDocno + '.JPEG';
Jpeg.SaveToFile(lsFileName);
Jpeg.Free;
finally
Bmp.Free;
end;
Delphi 이미지 StretchDraw문 사용시 글자 깨져 다른 방법 좀 알려주세요?
2018.03.13 09:17
서버에서 이미지를 다운 받아 이미지를 합쳐 하나의 이미지로 만들어 blob data로 저장하는 프로그램입니다.
Draw문을 사용시 이미지가 잘나오나 A4 사이지로 되지않아 StretchDraw문을 사용했으나 이미지가 깨져 글자 식별이 어렵습니다.
알려주시면 감사하겠습니다.~~
procedure HSComImgReport.SaveSignImage(pFilePath, pPatno, pMeddate,
pDocno: String; iFromPage, iToPage: Integer);
const
A4HEIGHT = 1123;
A4WIDTH = 794;
var
Bmp : TBitmap;
Jpeg : TJPEGImage;
lBitmap : TBitmap;
lsFileName : String;
begin
Bmp := TBitmap.Create;
Jpeg := TJPEGImage.Create;
try
iHeight := 0;
for ix:=iFromPage-1 to iToPage-1 do begin
lImage := TImage.Create(nil);
lImage.Stretch := True;
try
lBitmap := TBitmap.Create;
lBitmap.Assign(PageInfo[ix].Bmp);
BMP.Width := A4WIDTH;
BMP.Height := iHeight + A4HEIGHT;
// BMP.Canvas.Draw(0, iHeight, lBitmap); // 이미지가
BMP.Canvas.StretchDraw( Rect(0,iHeight,bmp.Width,bmp.Height), lBitmap );
iHeight := iHeight + A4HEIGHT;
finally
lBitmap.Free;
end;
Jpeg.Assign(BMP);
Jpeg.CompressionQuality := 100;
Jpeg.Compress;
// 파일생성 위치 + 파일명 생성(환자번호+신청일자+서식번호)
lsFileName := pFILEPATH + pPatNo + '_' + pMeddate + '_' + pDocno + '.JPEG';
Jpeg.SaveToFile(lsFileName);
Jpeg.Free;
finally
Bmp.Free;
end;
아래와 같이 CopyRect 으로 해결했습니다.~
BMP.Canvas.CopyMode := cmSrcCopy;
DstRect := Rect(0, iHeight, BMP.Width, BMP.Height);
SrcRect := Rect(0, 0, lBitmap.Width, lBitmap.Height);
BMP.Canvas.CopyRect(DstRect, lBitmap.Canvas, SrcRect);