AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Fehler beim Drehen eines Bildes
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler beim Drehen eines Bildes

Ein Thema von Hazardos · begonnen am 8. Nov 2003 · letzter Beitrag vom 9. Nov 2003
Antwort Antwort
Seite 1 von 2  1 2      
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#1

Fehler beim Drehen eines Bildes

  Alt 8. Nov 2003, 18:53
Hallo!!

Ich möchte ein Bild drehen, habe auch schon ne Procedure, aber ich sehe kein Ergebnis. Stattdessen bleibt das vorherige BIld wie es war in der TImage Komponente und wenn man mit einem anderen Fenster rüberfährt ist plötzlich nichts mehr zu sehen. Ich hatte die Selbe Procedure auch in einem anderen Programm verbaut, da funktioniert sie einwandfrei, deshalb kann ich mir nicht erklären, warum das bei mir nicht so ist. Bitte um jede Hilfe!!
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#2

Re: Fehler beim Drehen eines Bildes

  Alt 8. Nov 2003, 20:00
Hast du auch ein Code-Beispiel? Wenn es zu lang ist, kannst dus ja als Datei anhängen.
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#3

Re: Fehler beim Drehen eines Bildes

  Alt 8. Nov 2003, 20:44
Declaration
Delphi-Quellcode:
type
TRGBArray = ARRAY[0..0] OF TRGBTriple;
pRGBArray = ^TRGBArray;
THelpRGB = packed record
rgb : TRGBTriple;
dummy : byte;
end;
die Procedure :
Delphi-Quellcode:
procedure Drehen(Bitmap:TBitmap);
var P : PRGBQuad; //^THelpRGB;
    x,y,b,h : Integer;
    RowOut : ^TMyHelp;
    help : TBitmap;
begin
   Bitmap.pixelformat := pf32bit;
   help := TBitmap.Create;
   help.PixelFormat := pf32bit;
   b := bitmap.Height;
   h := bitmap.Width;
   help.Width := b;
   help.height := h;
   for y := 0 to (h-1) do begin
     rowOut := help.ScanLine[y];
     P := Bitmap.scanline[bitmap.height-1];
     inc(p,y);
     for x := 0 to (b-1) do begin
        rowout[x] := p^;
        inc(p,h);
     end;
   end;
   bitmap.Assign(help);
end;
aber vielleicht gibt es ja auch ne andere Möglichkeit, das Bild zu drehen.
  Mit Zitat antworten Zitat
Keldorn

Registriert seit: 6. Mär 2003
Ort: Meißen
876 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Fehler beim Drehen eines Bildes

  Alt 8. Nov 2003, 22:28
Hallo diese Procedure ist aus nem DoKo- buch oder?
sie ist nicht sauber (Bereichsprüfung muß deaktiviert sein) aber ise geht. wie sieht denn dein Aufruf aus? bei DokO ist auch ein Beipsiel mit dabei
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  image1.Picture.bitmap.PixelFormat := pf24bit;
  Drehen90Grad(image1.picture.bitmap);
end;
Mfg Frank

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#5

Re: Fehler beim Drehen eines Bildes

  Alt 8. Nov 2003, 23:13
Die Procedure hab ich aus einem Buch, welches wir in der Schule bekommen haben. Der Aufruf sieht genauseo aus, wie du ihn beschriben hast, nur funktioniert es nicht. Vielleicht hast du ja noch eine andere Lösung für das Problem. Wenn ja, kannst du sie bitte hiuer reinstellen??

mfg Hazardos
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#6

Re: Fehler beim Drehen eines Bildes

  Alt 9. Nov 2003, 01:05
So gehts (bei mir):

Delphi-Quellcode:
procedure Drehen90Grad(Bitmap:TBitmap);
var P : PRGBQuad;
    x,y,b,h : Integer;
    RowOut : PRGBQuad; // <-- Hier Typ geändert
    help : TBitmap;
begin
   Bitmap.pixelformat := pf32bit;
   help := TBitmap.Create;
   help.PixelFormat := pf32bit;
   b := bitmap.Height;
   h := bitmap.Width;
   help.Width := b;
   help.height := h;
   for y := 0 to (h-1) do begin
     rowOut := help.ScanLine[y];
     P := Bitmap.scanline[bitmap.height-1];
     inc(p,y);
     for x := 0 to (b-1) do begin
        rowout^ := p^; // <-- Und hier geändert
        Inc(rowout); // <--- Das dazu
        inc(p,h);
     end;
   end;
   bitmap.Assign(help);
end;
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#7

Re: Fehler beim Drehen eines Bildes

  Alt 9. Nov 2003, 02:43
Es ist echt zum Verzweifeln. Ich kann mir einfach nicht erklären, warum das nicht läuft, obwohl es bei dem anderen Programm läuft. Auch deine Änderungen haben nichts bei mir bewirken können. Habe ich vielleicht irgendwas vergessen?? In der Projekt-Unit oder im FormCreate??
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#8

Re: Fehler beim Drehen eines Bildes

  Alt 9. Nov 2003, 04:05
Na, dann erzähl mal ein paar Sachen. Ist das ein Bitmap (BMP), das du in TImage hast? Lädst du das Bild nachträglich per LoadFromFile oder was rein oder über die IDE?
  Mit Zitat antworten Zitat
Hazardos

Registriert seit: 8. Okt 2003
Ort: Alfeld
73 Beiträge
 
#9

Re: Fehler beim Drehen eines Bildes

  Alt 9. Nov 2003, 10:48
Hauptsächllich werden jpegs via LoadFromFile reingeladen. Dazu habe ich einfach die JPEG-Unit hinzugefügt.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#10

Re: Fehler beim Drehen eines Bildes

  Alt 9. Nov 2003, 15:20
Da das Drehen auf Bitmapebene passiert, müssen die Daten erstmal umgewandelt werden:

Delphi-Quellcode:
function Graphic2Bmp(AGraphic : TGraphic) : TBitmap;
begin
  result := TBitmap.Create;

  result.PixelFormat := pf24bit;
  result.Height := AGraphic.Height;
  result.Width := AGraphic.Width;
  result.Canvas.Draw(0, 0, AGraphic);
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  If not image1.Picture.Graphic.Empty then
    image1.Picture.bitmap := Graphic2Bmp(image1.Picture.Graphic);
  image1.Picture.bitmap.PixelFormat := pf24bit;
  Drehen90Grad(image1.picture.bitmap);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz