Wypełnianie panelu.

.::CYMES::.
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
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???

KiteK
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kopiuj
var
  C: TCanvas;
begin
C := TCanvas.Create;
C.Handle := GetDC(Panel1.Handle);
C.LineTo(100, 100); //rysujesz co chcesz
C.Free;
  • Rejestracja: dni
  • Ostatnio: dni
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:

Kopiuj
type TMojImage = class(TImage)

i w nim zrobic wlasna procedure rysowania:

Kopiuj
  procedure Paint; override;

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

Kopiuj
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.