Rysowanie JPG

0

Czytam, czytam, czytam i już mnie wszystko boli.
Czy można(Delphi 6) narysować jotpega na canvasie?

Bo wiem już, że z bitmapą nie ma problemów. Ale jak narysować jpg?

0

zapisujesz sobie jpg jako bitmape i rysujesz bitmapą :P

0

zapisujesz sobie jpg jako bitmape i rysujesz bitmapą :P

Tylko, że to się mija z celem :/

A to może ktoś jeszcze by powiedział, jak zmienić rozmiary bitmapy?

0
uses
  JPEG;

var
  JPG: TJPEGImage;
begin
  JPG := TJPEGImage.Create;
  try
    JPG.LoadFromFile('C:\Plik.jpg');
    Canvas.Draw(0, 0, JPG);
  finally
    JPG.Free;
  end;
end;

A co do bitmapy: obiekt klasy TBitmap ma właściwości Width i Height oznaczające (odpowiednio) szerokość i wysokość bitmapy. A jeśli chodzi o jej przeskalowanie, to metoda StretchDraw() klasy TCanvas.

0
uses
  JPEG;

var
  JPG: TJPEGImage;
begin
  JPG := TJPEGImage.Create;
  try
    JPG.LoadFromFile('C:\Plik.jpg');
    Canvas.Draw(0, 0, JPG);
  finally
    JPG.Free;
  end;
end;

Też tak myślałem, jednak to nie działa. Po prostu nic się nie dzieje.

0

Też tak myślałem, jednak to nie działa. Po prostu nic się nie dzieje.

A gdzie to wpisujesz? Może rysujesz, a potem jest odświeżenie okna i rysunek idzie się kąpać?

0

Nic dziwnego, canvas czego?

Majac TJpegImage mozesz se go przerobic na bitmape (wszystko w pamieci) przez assign TBitmap (parametr to twoj jpeg), porysowac po canvasie TBitmap i na koniec przerobic na jpega JpegImage.Assign(Bitmap).

//Znowu moj blad, myslalem, ze chodzi mu o rysowanie po jpegu, a nie jpega na czyms ;P

0

Nic dziwnego, canvas czego?

To był tylko przykład. Taki kod może być fragmentem jakiejś procedury. A jeśli będzie to metoda formy, to nie Canvas czego, tylko Canvas formy :) A zawsze można wpisać Form1.Canvas.CośTam albo np. Image1.Canvas.CośTam. Jak przepisaliście to dokładnie, to nic dziwnego, że nie chodzi. Poza tym, ja to piszę z głowy (nie mam Delphi uruchomionego, za długo się włącza żeby na chwilę i co chwilę włączać :) )

0

Też tak myślałem, jednak to nie działa. Po prostu nic się nie dzieje.

A gdzie to wpisujesz? Może rysujesz, a potem jest odświeżenie okna i rysunek idzie się kąpać?

To jest w onShow.

A próbowałem po tym dać jeszcze REPAINT i też żadnych rezultatów.

0

Też tak myślałem, jednak to nie działa. Po prostu nic się nie dzieje.

A gdzie to wpisujesz? Może rysujesz, a potem jest odświeżenie okna i rysunek idzie się kąpać?

To jest w onShow.

A próbowałem po tym dać jeszcze REPAINT i też żadnych rezultatów.

Jak dałeś Repaint to na pewno nie będzie rezultatów, bo rysujesz a potem odświeżasz okno.

  1. Rysuj to w obsłudze zdarzenia OnPaint.
  2. Po dodaniu do uses modułu JPEG komponent Image (konkretnie klasa TPicture) może obsługiwać JPEGi, więc wystarczy proste Image.Picture.LoadFromFile('Plik.jpg');
0

Juhas, nie jestem pewien, ale chyba kiedys mialem problemy z rysowaniem jpg przez Delphi - ladowac owszem, ladowalo, ale nie chcialo pisac go po canvasie. Moze poszukaj bibliotek do jpg?

0

U mnie też byl podobny problem, wczytało plik *.jpg do Canvasa, ale nie bardzo chciało po nim rysować. Spróbuj przekonwerterować jpg na bitmape a potem to wczytaj do canvasa, jak skonczysz edytowac rysunek, to zamień bitmape na jpeg i zapisz na dysk. :)

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