Paintbox zapis

0

Mam problem :) Za pewne to banalne pytanie dla tutejszych programistów, ale ja zacząłem dopiero pisać ;)

Czy da się w jakiś sposób zapisać Canvas komponentu PaintBox do pliku ??

Jesli nie w jaki sposób napisać program który rysował by grafike i mógł ją zapisywać ?? ( chodzi o sposób zapisu bo reszta jest łatwa)

Serdecznie Polecam Delphi także takim jak ja młodym programistom :)

0
  1. tworzysz TBitmap
  2. kopiujesz zawartość Canvasa na utworzoną bitmapę
  3. Zapisujesz bitmapę

jak chcesz w innym formacie to sobie musisz dodać jakąś paczkę z formatami graficznymi, np GraphicEx

0

ale nie znalazłem w Delphi7 komponetu Tbitmap :( co tu zrobić ??

0

Bo pewnie na palecie komponentow szukales... Zadeklaruj zmienna typu TBitmap, a poten wywolaj konstruktor Create dla niej.

0

dzięki :) bede próbował to sam zrobić :) jednak nie wychodzi :( mógłbyś to dokładnie i pokolei opisać , bo tak się jest najłatwiej uczyć :)

:) jak przeczytam tysiące książek i artykułów bez przykładów to to nic nie da :)

Programiści to bardzo wyrozumiali ludzie za co im bardzo dziękuje :)

0

proszę bardzo - wybieraj, który Ci się bardziej podoba

0

tam to juz jest w ogóle tak nagmatwane że nie wiem gdzie to znaleŹć 8-O ale czekam nadal na pomoc :)

0
var
bmp: TBitmap;
begin
  bmp := TBitamp.Create;
  try
  //Tu przeprowadzasz operacje na bitmapie :P
  finally
    bmp.Free;
  end;
end;
0

No ok :( nie wiem jak to jeszcze zrobić :( ale bede próbował to zrobić :) dzięki :)

Chce w jakikolwiek sposób zapisać Canvas z Paintbox-a ?? :) :-/

Dziękuje wszyskim :) Programiści to wspaniali ludzie :)

0
procedure TForm1.Button1Click(Sender: TObject);
var 
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  bmp.Height := PaintBox1.Height;
  bmp.Width := PaintBox1.Width;

  BitBlt(bmp.Canvas.Handle, 0, 0, PaintBox1.Width, PaintBox1.Height, PaintBox1.Canvas.Handle, 0, 0, SRCCOPY);

  bmp.SaveToFile('nazwa.bmp');

  FreeAndNil(bmp);
end;
0

<font size="1"></span> Dziękuje wszystkim programistą i autorowi tej strony oczywiście

Dzięki za gotowca teraz go tylko przerobić trzeba na SavePictureDialog i bedzie :)

Przerobiony już :) Teraz tylko na odwót wszystko potrzebne ?? (jęśli bys był łaska napisać), bo to nie jest takie łatwe, Gdzie jest błąd ?? :)

var
bmp: TBitmap;
begin
if OpenPictureDialog1.Execute then
bmp.LoadFromFile(OpenPictureDialog1.FileName);

bmp := TBitmap.Create;
PaintBox1.Height := bmp.Height;
PaintBox1.Width := bmp.Width ;

BitBlt(bmp.Canvas.Handle, 0, 0, PaintBox1.Width, PaintBox1.Height, PaintBox1.Canvas.Handle, 0, 0, SRCCOPY);

end;

I jeśli byś mógł wyjaśnić o co chodzi w lini :

"FreeAndNil(bmp)" :-| ??

Pozdrawiam Cie Serdecznie Misiek :)

0
var 
  bmp: TBitmap;
begin
  if OpenPictureDialog1.Execute then
  begin //mhm chyba WSZYSTKIE poniższe polecenia mają się wykonać jeśli wybrano bitmapę
    bmp := TBitmap.Create; //wypadało by najpierw stworzyć obiekt Bmp :>
    bmp.LoadFromFile(OpenPictureDialog1.FileName);

    PaintBox1.Height := bmp.Height;
    PaintBox1.Width :=   bmp.Width ;

    BitBlt(PaintBox1.Canvas.Handle, 0, 0, PaintBox1.Width, PaintBox1.Height, bmp.Canvas.Handle, 0, 0, SRCCOPY);
  end;
end;

poczytaj sobie jakie parametry przyjmuje funkcja BitBlt

I jeśli byś mógł wyjaśnić o co chodzi w lini :

"FreeAndNil(bmp)" ??

no wiesz w helpie to pisze ale specjalnie dla Ciebie :P FreeAndNil robi
Obiekt.Free a następnie Obiekt := nil;

A i zapomniałem - przestań już z tym słodzeniem bo się powoli zaczyna niedobrze robić :P. Jak już to thx w zupełności wystarczy i tyle

0

Coś jeszcze nie działa :) Ale popracuje nad tym :D

Mam jeszcze jedno pytanie :) Dlaczego po zapisaniu Bitmapy jako, część Canvasu z paintbox-a znika ??

Thx

0

Nie traktuj PaintBoxa jako stały obraz. To zwykły komponent, który wymaga odrysowywania, gdy system będzie chciał odmalować okno lub coś go przysłoni - nie robi tego automatycznie.

0

więc jak go mam odrysować ?? :)

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