Q&A

  • 투명하게.....
안녕하세요 ...

이미지그림의 바탕에서 그위에 리스트박스를 올렸습니다...

이미지그림의 어떤부분을 클릭하면

listbox1.visible:=true; 가 됩니다.

이미지 그림위에 그냥 리스트 박스를 올려 놓으니까 보기가 싫더군요

그런데 이부분을 투명하게(이미지 그림의 부분을 리스트박스에 가져옴) 하는방법좀 가르쳐주세요.



button1click(sender:object);

begin

listbox1.visible:=true;

listbox1.items.add('가');

listbox1.items.add('나');

listbox1.items.add('다');

listbox1.items.add('라');

listbox1.canvas.brushcopy(rect(1,1,100,100),image1.picture.bitmap,rect(1,1,100,100));

end;





위의 문장이 확실하지 않지만 이미지그림의 한 부분을 리스트박스에 넣는것은

성공했습니다.

그런데 리스트박스의 내용이 나오지가 않더군요..

그래서 리스트박스를 클릭하면은 리스트박스의 한 부분이 없어지고 힌색바탕의 '가'라는 글자가 나타남니다.



원인은 그림을 합성해야 한다고 하는데 그말이 맞나요?

어떻게 하면 그림이 나오고 리스트박스의 내용도 나오고 리스트박스의 내용을

클릭했을때 그림이 없어지지 않게 하려면 어떻게 해야 하나요?

아직 초보라서 자료를 찾아 봐도 무슨내용인지 하나도 모르겠습니다..

알고 계시는분 제발좀 가르켜 주세요...



1  COMMENTS
  • Profile
    구창민 1999.07.13 08:57
    장철진 께서 말씀하시기를...

    > 안녕하세요 ...

    > 이미지그림의 바탕에서 그위에 리스트박스를 올렸습니다...

    > 이미지그림의 어떤부분을 클릭하면

    > listbox1.visible:=true; 가 됩니다.

    > 이미지 그림위에 그냥 리스트 박스를 올려 놓으니까 보기가 싫더군요

    > 그런데 이부분을 투명하게(이미지 그림의 부분을 리스트박스에 가져옴) 하는방법좀 가르쳐주세요.

    >

    > button1click(sender:object);

    > begin

    > listbox1.visible:=true;

    > listbox1.items.add('가');

    > listbox1.items.add('나');

    > listbox1.items.add('다');

    > listbox1.items.add('라');

    > listbox1.canvas.brushcopy(rect(1,1,100,100),image1.picture.bitmap,rect(1,1,100,100));

    > end;

    >

    >

    > 위의 문장이 확실하지 않지만 이미지그림의 한 부분을 리스트박스에 넣는것은

    > 성공했습니다.

    > 그런데 리스트박스의 내용이 나오지가 않더군요..

    > 그래서 리스트박스를 클릭하면은 리스트박스의 한 부분이 없어지고 힌색바탕의 '가'라는 글자가 나타남니다.

    >

    > 원인은 그림을 합성해야 한다고 하는데 그말이 맞나요?

    > 어떻게 하면 그림이 나오고 리스트박스의 내용도 나오고 리스트박스의 내용을

    > 클릭했을때 그림이 없어지지 않게 하려면 어떻게 해야 하나요?

    > 아직 초보라서 자료를 찾아 봐도 무슨내용인지 하나도 모르겠습니다..

    > 알고 계시는분 제발좀 가르켜 주세요...

    >



    장철진님 안녕하세요?

    아래는 ListBox 배경에 이미지를 삽입하는

    예제입니다. 유즈넷에서 퍼왔습니다.

    참고 하시구, 즐거운 프로그래밍 되세요~



    procedure TForm1.ListBox1DrawItem(Control: TWinControl;

    Index: Integer; Rect: TRect; State: TOwnerDrawState);

    var

    OldStyle : TBrushStyle;

    R : TRect;

    begin

    if Index = ListBox1.Items.Count - 1 then

    begin

    Rect.Bottom := ListBox1.Height;

    end;



    R.Top := (Index * ListBox1.ItemHeight) mod Image1.Picture.Height;

    R.Bottom := R.Top + Rect.Bottom - Rect.Top;

    if R.Bottom > Image1.Picture.Height then

    begin

    R.Top := 0;

    R.Bottom := R.Top + Rect.Bottom - Rect.Top;

    end;

    R.Left := Rect.Left;

    R.Right := Rect.Right;

    ListBox1.Canvas.CopyRect(Rect, Image1.Picture.Bitmap.Canvas, R);



    OldStyle := ListBox1.Canvas.Brush.Style;

    ListBox1.Canvas.Brush.Style := bsClear;

    ListBox1.Canvas.Font.Color := clBlack;

    ListBox1.Canvas.TextOut(Rect.Left + 3, Rect.Top + 1, ListBox1.Items[Index]);

    ListBox1.Canvas.Font.Color := clWhite;

    ListBox1.Canvas.TextOut(Rect.Left + 2, Rect.Top, ListBox1.Items[Index]);

    ListBox1.Canvas.Brush.Style := OldStyle;

    end;