김용수 님이 쓰신 글 :
: 아래에 관련 내용이 있지만 답이 없어 다시 올립니다.
: paintbox에 그려진 그림을 저장하고자 하는데, 만약 파일열기창과 같이 다른 것들이
: paintbox위에 있는 상태에서 저장을 하면 paintbox에 그려진 그림이 아닌
: 그 위에 있는 것들이 저장됩니다.
: 이 문제를 해결하기 위해 꽁수를 생각해 보았는데,
: paintbox에 그려진 그림을 Timage로 옮긴다음 Timage의 이미지를 저장하면
: 되지 않을까 생각하는데 맞는 방법인지요?
:
: 만약 그렇다면, paintbox에 그려진 그림을 Timage로 어떻게 복사할 수 있는지요?
:
:
: 추가로 하나 더 질문드립니다.
:
: Timage에서 LoadFromFile로 bmp파일을 읽어드리는데,
: 읽어들일 bmp파일의 확장자를 .bmp가 아닌 .add와 같이
: 바꾼다음 LoadFromFile으로 읽으니 에러가 납니다.
: LoadFromFile에서 파일의 포맷을 지정할 수 없는것 같은데
: 방법이 있는지요?
PaintBox는 TImage와 달리 위에 다른 그림(윈도우창 등)이 지나가면,
본래의 그림이 다시 그려주지 못합니다.
그렇기 때문에 PaintBox위에 열기창이 있다면, 이미 PaintBox의 그림은 손상된 것입니다.
당연히 저장을 할때, 그리고 질문하신것 처럼 TImage로 복사를 하던 손상된 이미지가 저장/복사됩니다.
PaintBox를 사용해야하는 어떤 이유가 있는 것인지요.
TImage를 PaintBox로 복사하기
BitBlt(PaintBox1->Canvas->Handle,0,0,100,100,Image1->Canvas->Handle,0,0,SRCCOPY);
PaintBox를 TImage로 복사하기
BitBlt(Image1->Canvas->Handle,0,0,100,100,PaintBox1->Canvas->Handle,0,0,SRCCOPY);
그리고 실제는 BMP파일이지만 확장자를 다르게 했을경우 load하는 방법입니다.
Image1->Picture->Bitmap->LoadFromFile("C:\\test.b"); => 정상 Load
Image1->Picture->LoadFromFile("C:\\test.b"); => 오류발생
|