Wypełnianie panelu.

0

Mam pytanie jest mi to potrzebne do mojego programu.

Jak wypełnić panel małymi imagami? Chodzi mi o zrobienie podglądu dla tapet na pulpit tak jak w windowsie, gdy ustawi się opcję tapety sąsiadująco. Aby zmniejszyć tapetę proporcjonalnie już mam.
T.J:

Image1.Height:= (image1.Picture.Height*113) div y;
image1.Width:= (image1.Picture.Width*153) div x;

Gdzie x i y to rozdzielczości pulpitu.
Teraz jak wypełnić ten panel???

0

Cześć! :/ Chcesz otrzymać Panel jako Canvas?

var
  C: TCanvas;
begin
C := TCanvas.Create;
C.Handle := GetDC(Panel1.Handle);
C.LineTo(100, 100); //rysujesz co chcesz
C.Free;
0
  1. jesli Image1 ma byc na np. Panelu to mozna dynamicznie stworzyc kilkanascie Image'ow i w petli zmieniac ich polozenie (Top, Left).
    A gdy juz ci sie znudzi ogladanie sasiadujaco (;)) mozesz np usunac i zaraz ponownie stworzyc Panel, spowoduje to usuniecie wszystkich obrazkow naraz, nie bedziesz musial usowac ich sam po kolei

  2. Mozesz stowrzyc obiekt potomny:

type TMojImage = class(TImage)

i w nim zrobic wlasna procedure rysowania:

  procedure Paint; override;

a w niej po prostu samemu narysujesz na Canvas'ie to co jest w Picture, mozesz dodac dodatkowa zmienna do swojego

TMojImage

odpowiedzialna za to czy twoja Print ma rysowac "wysrodkowane", "rozciagniete" czy "sasiadujaco"

Jesli znasz sie na programowaniu dosc dobrze to radze 2 sposob bo jest na pewno szybszy i jak to mowia "zgodna z mysla programowania w Delphi" :-D
Ale jak chcesz bez problemu zastosuj sie do metody 1, a efekt powinien byc taki sam :)

Pozdrowionka

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