AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Bild um angegebene 90° 180° 270° drehen
Thema durchsuchen
Ansicht
Themen-Optionen

Bild um angegebene 90° 180° 270° drehen

Ein Thema von andiak · begonnen am 11. Apr 2008 · letzter Beitrag vom 7. Mär 2012
Antwort Antwort
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#1

Bild um angegebene 90° 180° 270° drehen

  Alt 11. Apr 2008, 21:58
Bisher habe ich es geschaft mein Bild Vertikal und Horizontal zu spiegeln mit folgender proceduren:

Delphi-Quellcode:
procedure VertikalSpiegele(Bild1:TImage);
var x,y:integer;
       hilf : TColor;
begin
  for x:=0 to Bild1.width div 2 - 1 do
   for y:=0 to Bild1.height - 1 do
   begin
    hilf := Bild1.canvas.pixels[x,y];
    Bild1.canvas.pixels[x,y]:=Bild1.canvas.pixels[Bild1.width-1-x,y];
    Bild1.canvas.pixels[Bild1.width-1-x,y] := hilf;
   end
end;

procedure HorizontalSpiegeln (Bild1:TImage);
var x,y:integer;
       hilf : TColor;
begin
  for x:=0 to Bild1.width - 1 do
   for y:=0 to Bild1.height div 2 - 1 do
   begin
    hilf := Bild1.canvas.pixels[x,y];
    Bild1.canvas.pixels[x,y]:=Bild1.canvas.pixels[x,Bild1.height-1-y];
    Bild1.canvas.pixels[x,Bild1.height-1-y] := hilf;
   end
end;
funktioniert alles

jetzt muss ich es nur noch hinbekommen das auf befehl das bild um angegeben 90°.... gedreht wird machen wollte ich das mit dem Objekt RatioBox und halt nen button...
Ne idee wie der befehl aussehen muss?
StretchBlt und co soll ich nicht verwenden sondern in der art wie ich das oben geschrieben habr :/
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Bild um angegebene 90° 180° 270° drehen

  Alt 12. Apr 2008, 08:47
Hi, würdest du ein Blatt Papier nehmen und 2 Bilder hinmalen und dann "Von Hand" mal die ersten Pixel rotieren würdest du es sofort sehen, wies geht.

Aber anscheinend ist dir das zu kompliziert.

Kann ich verstehn so eine Frage in der DP ist ja schnell gestellt. Auch wenn das bedeutet das wir hier wieder irgendwelche Hausaufgaben beantworten.

Deswegen sollst du mal diese Lösung hier bekommen :

Delphi-Quellcode:

type TMyhelp = array[0..0] of TRGBQuad;

procedure Drehen90Grad(Bitmap:TBitmap);
var P : PRGBQuad; //ist in der Windows Unit
    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;
Diese Lösung must du verstehn um sie entsprechend in dein Format ummünzen zu können

viel spass damit.
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
andiak

Registriert seit: 1. Nov 2007
89 Beiträge
 
#3

Re: Bild um angegebene 90° 180° 270° drehen

  Alt 12. Apr 2008, 09:24
ich hab mir da schon gedanken zu gemacht.... und meine beiden codes habe ich ja auch verstanden das der code z.b. bei horizontal von unten ein pixel farbpunkt nimmt den oben einfügt während dessen den oberen unten einfügt und so weiter und div2 damit das kopieren und einfügen der bildpunkte nur bis zur mitte geht... sonst würde es ja doof aussehen

Ich bin leider nur total unbewandert mit den codes... aber kennt jemand ne Seite wie Selfhtml? wo mann das alles nachlesen kann? dann könnte ich mir das bestimmt auch selbst besser beibringen
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Bild um angegebene 90° 180° 270° drehen

  Alt 12. Apr 2008, 09:36
HI,

mein Vorposter aus Post #2 hat ja recht, sich so auszudrücken. Wenn ich etwas brauche, suche ich zuerst, ob es schon jmand gemacht hat (Copy&Lern), dann versuche ich es selbst und erst dann wird im Forum gepostet.

Frage: Scon mal in Google nach Bei Google suchendelphi Bild drehen gesucht??
Falls dann auf der 1. Seite nichts brauchbares ist, wobei in dem Fall schon das Ergebnis auf Seite 1 präsentiert wird, kann man dann die Suchanfrage verfeinern.

rollstuhlfahrer
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
272 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Bild um angegebene 90° 180° 270° drehen

  Alt 12. Apr 2008, 11:23
Irgendwoher habe ich eine Komponente namens "RotateImage", die macht alles außer spiegeln...
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Bild um angegebene 90° 180° 270° drehen

  Alt 12. Apr 2008, 14:43
Bei den Stichwörter "Grafik" und "Delphi" sollte einem eigentlich sofort efg's Computer Lab einfallen.

Rotate ScanLine
Flip, Reverse and Rotate
Graphics Algorithms
  Mit Zitat antworten Zitat
mz23
(Gast)

n/a Beiträge
 
#7

AW: Bild um angegebene 90° 180° 270° drehen

  Alt 7. Mär 2012, 16:20
Delphi-Quellcode:
mirror a TImage Left-Right and Up-Down
by M.Z. March 5, 2012

{-mirror up-down-}
procedure TImageEdit.bMirrorUpDnClick(Sender: TObject);
var dx, dy : integer;
begin
dx:=imaDest.Width;
dy:=imaDest.Height;
imaDest.Canvas.CopyRect(Rect(0,0,dx,dy),
         imaDest.Canvas,Rect(0,dy,dx,0));
end;

{-mirror left-right-}
procedure TImageEdit.bMirrorLeRiClick(Sender: TObject);
var dx, dy : integer;
begin
dx:=imaDest.Width;
dy:=imaDest.Height;
imaDest.Canvas.CopyRect(Rect(0,0,dx,dy),
         imaDest.Canvas,Rect(dx,0,0,dy));
end;

{-rotating 180 degrees-}
procedure TImageEdit.bRot180Click(Sender: TObject);
var dx, dy : integer;
begin
dx:=imaDest.Width;
dy:=imaDest.Height;
imaDest.Canvas.CopyRect(Rect(0,0,dx,dy),
         imaDest.Canvas,Rect(dx,dy,0,0));
end;

{-we need: ImageEdit: TForm-}
{-         imaDest: TImage-}
{-         bMirrorUpDn, bMirrorLeRi, bTor180: TButton-}
  Mit Zitat antworten Zitat
Gustav.R
(Gast)

n/a Beiträge
 
#8

AW: Bild um angegebene 90° 180° 270° drehen

  Alt 7. Mär 2012, 16:51
Zwischen 2008 und 2012 ging offensichtlich die Deklaration von imaDest verloren.

Sir Rufo, wo bleibt Ihr Kommentar dazu

GG
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

AW: Bild um angegebene 90° 180° 270° drehen

  Alt 7. Mär 2012, 17:21
Zum drehen (um beliebige Winkel) kann man PlgBlt verwenden.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Bild um angegebene 90° 180° 270° drehen

  Alt 7. Mär 2012, 17:33
http://www.delphipraxis.net/156716-g...-und-zoom.html
oder
http://www.delphipraxis.net/159553-b...eins-bild.html
#5 Grafiken drehen und Zoomen
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:23 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