przezroczysty listBox

0

zrobiłem tak jak jest w http://4programmers.net/faq.php?id=145 i nie otrzymałem przezroczystego tła (linia Brush.Style := bsClear; // tło na przezroczyste ) co powinienem zrobić ??

/// dopisane
dokładnie chodzi oto, że przez elementy listBoxa (items) widać to co jest na formatce (konkretnie label);

Transparent Components currently includes two components: Memo and Edit box.

jakieś pomysły ?? inne niż grzebanie w kodzie ??

0

Na torrym jest pakiet Transparent Components, ale nie wiem o do dokłądnie Ci chodzi :]

0

Tu chodzi o tlo pędzla a nie tlo Listbox-a!!!

0

Precyzyjniej : musisz narysować na ListBoxie (piksel po pikselu) to co znajduje się za nim. Pobierasz wartość koloru z obiektu będącego za nim i przypisujesz ją do odpowiedniego piksela w ListBox. Rysujesz i pobierasz piksele poprzez klasę Canvas. Proces rysowania musisz dodać do zdarzenia OnPaint. Jak przerysujesz tło musisz odrysować na nim elementy ListBoxa (Items - jak są to zwykłe napisy to proponuje użyć TextOut w Canvasie...)

Zobacz też metodę ScanLine na wypadek gdyby ci obraz skakał za mocno.. :p Jest ona zdecydowanie szybsza..

0

Precyzyjniej : musisz narysować na ListBoxie (piksel po pikselu) to co znajduje się za nim. Pobierasz wartość koloru z obiektu będącego za nim i przypisujesz ją do odpowiedniego piksela w ListBox. Rysujesz i pobierasz piksele poprzez klasę Canvas. Proces rysowania musisz dodać do zdarzenia OnPaint. Jak przerysujesz tło musisz odrysować na nim elementy ListBoxa (Items - jak są to zwykłe napisy to proponuje użyć TextOut w Canvasie...)

Zobacz też metodę ScanLine na wypadek gdyby ci obraz skakał za mocno.. :p Jest ona zdecydowanie szybsza..

procedure TForm1.FormPaint(Sender: TObject);
var i,j:byte;
begin
  for i:=0 to 150 do
    for j:=0 to 150 do
      ListBox1.Canvas.Pixels[i,j]:=form1.Canvas.Pixels[ListBox1.Left+i, ListBox1.Top+j];
end;

w efekcie otrzymuję czarny kwadracik, a liczyłem na kwadracik w kolorze formy (clBtnFace). Będe wdzięczny za kodzik. Wspome jeszcze, że pod tym listboxem ma być label. Jeżeli nie cały kodzik, to chociaż jak zrobić zrzut formatki w miejscu pod listbox'em (metoda inna niż przesuwanie listboxa, robienie zrzutu ekranu i wklajanie, bo to wydaje się być powolne)

1 użytkowników online, w tym zalogowanych: 0, gości: 1