Problem z Canvasem...

0

Mam taki problem, wydaje mi się, że nie powinniście mieć problemów z odpowiedzią... Mówiąc do rzeczy, rysuje sobie coś na Canvasie załóżmy okna (Form). I jeśli moje okno zostanie przykryte innym oknem, to to, co było w tym miejscu narysowane, zniknie. Jak temu zapobiec ?! Mam nadzieję, że zabardzo nie namotałem...

0

Procke rysującą wciepnij do OnPaint formy.

'OnPaint' to procedura ktora sie wykonuje wtedy gdy zawartość okna jest odświeżana (czyli gdy np zaslonisz swoją forme inną), bo canvas nie rysuje czegoś 'na stałe' lecz trzeba ciągle rysować od nowa (znaczy sie wtedy gdy coś zasłoni to co narysowałeś). mam nadzieje że zakumałeś

0

No tak, to akurat wiedziałem, ale może powiem dokładniej, o co chodzi.
Piszę coś na styl... hmmm... grafiki żółwia tudzież Logo. I teraz Mam Edit, wpisuję tam komendę, rysuje mi się kreska na canvasie. Tak więc rysowanie odbywa się po naciśnięciu Entera, a nie w onPaincie. Pewnym rozwiązaniem byłoby stworzenie tablicy, w którym trzymałbym listę komend od ostatniego czyszczenia pola, ale w przypadku wielu sługiej "historii" mogłoby to spowalniać kompa (chyba, jeśli jestem w błędzie - powiedzcie mi o tym!). W kązdym razie, starałbym się unikać takiego typu rozwiązania.

0

Strówrz sobie bufor dla canvasu formy.

np :

var
  bufor : TCanvas;

//w OnCreate formy:
begin
   bufor := TCanvas.Create;
   bufor.Width := Form.Width;
  // itd..
end;

// w onKeypress Edita:
begin
     bufor.LineTo(cośtam);
end;

// w OnPaint formy:
begin
  canvas.Draw(0,0, bufor);
end;

0

Rzeczywiście, to całkiem niezłe rozwiązanie :] Dzięki !!
[po chwili namysłu...]
szkoda, że nie działa... nie kapuję, ale nie mogę określać bufor.width itp. ani nie mogę wykonać Canvas.Draw(0,0,bufor)... czemu?

0

Rozwiązanie najprostsze, acz najgłupsze:
Rysuj na Image, z którego zrobisz tło...

0

Czasem rozwiązania najprostsze są najbardziej skuteczne :P Image jest pomysłem wmiare dobrym, chciałbym jednak, aby ktoś pomógł mi z tym buforem - tak jak kombinował AndRew...

0

genialny pomysł na bufor: bitmapa pamieciowa... tam na 100% możesz spoko określać width i height i wiele innych parametrów, które bardzo się przydają...

AndRew dał pomysł i ogólny zarys, natomiast kod to już coś innego...

0

Okej, okej.. Już widze błąd.. zagalopowałem się z tym canvasem. :)

Trzeba określić na czym ten canvas ma być (my zrobimy sobie bitmapkę).

czyli w sumie wszystko tak samo jak było ale zamiast TCanvas, pisz TBitmap. Powinno pomóc..

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