|
[GraphicControl에 대해]
TImage는 핸들이 없는 GraphicControl입니다.
Canvas가 있지만 진짜 화면에 보여지는 Canvas가 아니죠
즉 TImage는 자신의 Parent의 DC에다가 자신이 가지고 있는 Image를 그립니다.
모든 GraphicControl이 다 그렇습니다.
[Transparent에 대해]
TImage의 Transparent기능은 자신이 가지고 있는 이미지 중에서
특정 색상은 Parent DC에 그리지 않는다는것입니다.
TImage의 경우 Transparent 색상을 특별히 정해주지 않으면
{0,0} 위치의 Pixcel 색상이 Transparent 색상이 됩니다.
TransparentColor 는 아래와 같이 설정해 줍니다.
Image1->Picture->Bitmap->TransparentColor = clFuchsia;
[프로그램에 대해]
1. TransparentColor 에 대해
아래와 같이 코딩하면 TransparentColor 는 clFuchsia 이 되겟죠
Image1->Canvas->Pen->Color=clFuchsia;
Image1->Canvas->Brush->Color=clFuchsia;
Image1->Canvas->Rectangle(0,0,Image1->Width,Image1->Height);
Image1->Transparent= true;
Image1->Picture->Bitmap->TransparentColor = clFuchsia;
프로그램에서 Image1의 Parent 는 Form1 이잖아요
Form1의 색상은 clBtnFace이구
그래서 Image1의 clFuchsia 색상 부분은 모두 clBtnFace 색상으로 나온것입니다.
2. TImage는 Transparent 속성에 의해
자신이 가지고 있는 Color를 변경하는것이 아니라
Parent에 단지 TransparentColor 색상을 칠하지 않는다..
즉 Image2에 있는 Image1에 copy할때는 색상은 그대로 복사되어서 Image1이 가지고 있게 되죠
박대성 님이 쓰신 글 :
: 폼에 이미지 콤포넌트 image1, image2 를 올려놓고
:
: image2에서 일부를 읽어서 투명을 적용하여 image1에 그려보려고 합니다.
: 잘라서 그려보면 투명처리가 되는게 아니고 지정된 색이 바닥색으로 바뀌는 효과가 되는군요
:
: 샘플을 참조해봤습니다.
:
: 도형을 그리고 스프라이트를 올려보면 스프라이트 외곽이 투명이 되어 도형이 비치는게 아니고
: 바닥회색이 나타나는군요..
:
: 적용은 transparent 를 true 하고 이미지를 잘라서 붙여본것입니다.
|