비트맵 이미지들은 리소스 파일에 모두 포함시켜두었습니다.
현재 문제가 되고 있는 부분들은 비트맵 이미지를 제대로 인식하지 못한다는 점입니다.
Image1에 일단 이미지를 불러들이고
MyBitmap이라는 이름으로 비트맵을 하나 생성하여
Image1에 스트레치된 사이즈 그대로를 그려넣습니다.
그리고 'BSLEFT' + IntToStr(i)와 같은 형태로
비트맵 이미지들을 연속적으로 불러들여
MyBoard라는 비트맵에 차례대로 이어서 붙여넣습니다.
그리고 최종적으로 그렇게 완성된 MyBoard의 비트맵을 Image2에 붙여넣죠.
헌데... 아무런 오류도 없건만 완성된 비트맵이 뜨질 않습니다.
(MyBoard, MyBitmap, ImgTop, ImgLeft은 지역 변수로 선언되었으며
MyBoard의 Create 선언은 FormCreate 이벤트에 작성되었고
MyBoard의 Free 선언은 FormClose 이벤트에 작성되어 있습니다.)
특이한 점은 아래 코드중 주석을 지우고 그 위쪽의 비트맵 불러오는 코드를
주석처리하고 나서 실행하면 완성된 비트맵이 뜨기는 합니다.
다만 가장 첫번째의 이미지만 연속적으로 체워진 형태로 뜹니다.
제가 뭘 잘못한 건지 모르겠군요.
이 외의 다른 코드는 없습니다.
리소스 파일에 넣은 비트맵들은 델파이 프로젝트 메뉴의 Resources창에서
직접 넣었습니다.
무엇이 잘못되었는지 아시는 분께서는 답변 좀 부탁 드리겠습니다.
procedure TForm_Main.Button1Click(Sender: TObject);
var i, j: Integer;
begin
ImgLeft := 5;
ImgTop := 5;
for i := 1 to 23 do begin
for j := 1 to 23 do begin
MyBitmap := TBitmap.Create;
if (i <= 8) and (j <= 8) then
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSNONE')
else if i = 8 then
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSTOPBOTTOM' + IntToStr(i))
else if j = 8 then
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSLEFTRIGHT' + IntToStr(i))
else if (i > 8) and (j > 8) then
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSNORMAL')
else if (i < 8) and (j > 8) then
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSTOP' + IntToStr(i))
else
Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSLEFT' + IntToStr(i));
//Image1.Picture.Bitmap.LoadFromResourceName(hInstance, 'BSTOP' + IntToStr(i));
MyBitmap.Height := Image1.ClientHeight;
MyBitmap.Width := Image1.ClientWidth;
MyBoard.Height := 600;
MyBoard.Width := 600;
MyBitmap.Canvas.Brush.Style := bsClear;
MyBitmap.Canvas.StretchDraw(Image1.ClientRect, Image1.Picture.Bitmap);
MyBoard.Canvas.Draw(ImgLeft, ImgTop, MyBitmap);
MyBitmap.Free;
ImgLeft := ImgLeft + 21;
end;
ImgLeft := 5;
ImgTop := ImgTop + 21;
end;
Image2.Picture.Assign(MyBoard);
end;