AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Grenzen von PlgBlt

Ein Thema von Schwedenbitter · begonnen am 5. Mai 2009 · letzter Beitrag vom 23. Nov 2010
Antwort Antwort
Seite 1 von 2  1 2      
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#1

Grenzen von PlgBlt

  Alt 5. Mai 2009, 14:06
Ich weiß nicht, ob die Frage nicht besser bei Multimedia/Grafik stehen sollte. Da es aber eine Windows-Funktion betrifft, stelle ich sie hier. Notfalls kann sie durch den Moderator verschoben werden:

Ich bin - nach wie vor - auf der Suche nach einer schnellen und einfachen Methode, um ein 1-Bit-Bitmap (schwarz/weiß) zu drehen. Dabei kommt man an PlgBlt nicht vorbei und wie das geht, weiß ich im Grunde. Ich habe aber das Problem, dass die Funktion ab einer bestimmten Größe des Bitmaps nicht mehr das tut, was sie soll; nämlich garnichts. Ich möchte aber gern bei der Funktion bleiben, weil Sie einfach zu handhaben ist, ich keine Komponenten von Hand einbinden muss (habe TurboDelphi 2006), ich nicht auf fremden Quelltext angewiesen bin und die "Farbinfo" des Bitmaps unangetastet bliebt.

Ich habe mal meinen Quelltext angehängt. Das kleine Bitmap lässt sich drehen, das große nicht. Bei letzterem werden nur noch Höhe und Breite miteinander vertauscht. Ich habe schon alle möglichen Hinweise im Netz gelesen, bin aber nicht wirklich auf etwaige Einschränkungen gestoßen.

Was macht ich verkehrt?

Gruß und Dank, Alex
Angehängte Dateien
Dateityp: zip plgblt_p_494.zip (67,9 KB, 35x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 14:45
Zitat:
Dabei kommt man an PlgBlt nicht vorbei
Klar geht auch mit GDI+ Stichwort: FlipRotatePicture

EDIT:
aber sehe gerade!
Zitat:
Ich möchte aber gern bei der Funktion bleiben
gruss Emil
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 16:23
Danke für die Antwort!

Zitat von EWeiss:
Klar geht auch mit GDI+ Stichwort: FlipRotatePicture
Nehme ich auch, wenn es gut ist. Ich habe hier im Forum mal nachgesehen und mir die gdiplus.zip von hier herunter geladen. Die Dateien aus dem Archiv-Verzeichnis pas habe ich nach lib kopiert und dann die Datei ProjectGroup.bpg geöffnet. Jetzt bekomme ich diese Fehlermeldung. Ich habe an anderer Stelle gefunden, man solle eine vorhandene DirectDraw.pas überschreiben. Die habe ich aber nicht. Ferner soll man sich eine aktuelle JEDI.inc besorgen.

Kann ich da jede beliebige nehmen?

Zu FlipRotatePicture selbst habe ich leider noch nichts gefunden. Ich habe mir Deine(?) Demos mit der Uhr etc. angesehen. Das sieht sehr vielversprechend aus, auch wenn es nur kleine Bilder sind. Ich möchte etwas ab 3.000 x 4.000 aufwärts drehen...
Alex Winzer
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 16:29
Zitat:
Kann ich da jede beliebige nehmen?
Am Besten eine aktuelle.
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 16:55
Habe mal mein Archiv angehängt.
Hoffe das ist erlaubt.

Habe unter ..
Using Images, Bitmaps, and Metafiles/Rotating, Reflecting, and Skewing Images

Das Sample ein bißchen modifiziert und mit deinen großen Bitmap geladen.
Es funktioniert.

Das Archiv ist so gross weil dein Bitmap enthalten ist. hmm 1,8MB

gruss Emil
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 17:32
Zitat von EWeiss:
Habe
Das Sample ein bißchen modifiziert und mit deinen großen Bitmap geladen.
Es funktioniert.

Das Archiv ist so gross weil dein Bitmap enthalten ist. hmm 1,8MB

gruss Emil
Danke es klappt.

Mein erstes Archiv ist auch nur 68 KB groß und da sind 2 große Dateien drin!
Es liegt eher daran, dass nun die ganze GDI+ Implementierung für Delphi auf dem Server bei DelphiPraxis.net rumlungert. Du kannst ja mit EDIT das Archiv aus Deinem Beitrag wieder rausnehmen. Den Link zu GDI+ findet man in meinem ersten Post und Dein Beispiel habe ich jetzt als kleines Archiv mit meiner 1,8 MB Datei beigefügt. Es ist jetzt etwas größer. Denn ich habe die exe mit dringelassen, falls jemand experimentieren aber nicht GDI+ runterladen möchte.

Werde mal sehen, wie weit ich damit komme...

Gruß und Dank, Alex
Angehängte Dateien
Dateityp: zip gdiplus_rotate_p_587.zip (89,1 KB, 35x aufgerufen)
Alex Winzer
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 17:41
Beachte..
Du mußt ja nicht alles einbinden.
Lade die DLL dynamisch und kopiere nur den teil in dein Projekt den du verwendest.
Für eine Funktion über 1 MB an Daten hinzuzufügen ist etwas viel denk ich mal.

In meinen Uhr Projekt ist ne *.pas wo du die initialisierung von GDI+ von verwenden kannst
Du brauchst GdipImageRotateFlip, GdipCreateBitmapFromHBITMAP und die type natürlich das ist alles.

gruss Emil
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 18:10
Zitat von EWeiss:
Lade die DLL dynamisch und kopiere nur den teil in dein Projekt den du verwendest.
Ich habe leider keine Ahnung, wie das geht, schaue mir aber gern nochmal die Uhr an. Zunächst muss ich das mit dem Drehen erstmal grundsätzlich hinbekommen. Das andere ist dann Kosmetik.

Ich bin grad am Grübeln: Wie bekomme ich mein TBitmap in das TGPImage gezeichnet?

Für die Demo ist das Vorgehen ja OK. Aber ich brauche es (später) zum Bearbeiten von Bildern, die frisch aus dem Scanner kommen. Ich verfüge nicht über das Wissen bzw. die Kapazitäten mein geliebtes TDelphiTwain umzuschreiben. Und von dort bekomme ich "nur" TBitmaps geliefert. Die gilt es zu bearbeiten. Ein Assign() habe ich leider nicht gefunden.

Gruß, Alex
Alex Winzer
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 18:14
GdipCreateBitmapFromHBITMAP oder umgekehrt GdipCreateHBITMAPFromBitmap

Kann dir nur anraten mein Beispiel anzuschauen da ist alles drin

gruss Emil
  Mit Zitat antworten Zitat
Schwedenbitter

Registriert seit: 22. Mär 2003
Ort: Finsterwalde
622 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Grenzen von PlgBlt

  Alt 5. Mai 2009, 23:25
Zitat von EWeiss:
GdipCreateBitmapFromHBITMAP oder umgekehrt GdipCreateHBITMAPFromBitmap

Kann dir nur anraten mein Beispiel anzuschauen da ist alles drin

gruss Emil
Ich hatte es befürchtet. Ich bin Gelegenheitsprogrammierer und aus diesem Grunde sprach ich auch von einfach. Das alles ist das Gegenteil von Einfach. Ich staune, dass auch hier im Forum manche Fragen nicht beantwortet wurden und sich keiner mehr rührt. Vermutlich wissen alle außer mir die Antwort.

Ich vermute anhand der mir ausgegebenen Zeiten, dass ich erfolreich dem HBITMAP ein TBitmap zugewiesen und vermutlich auch gedreht habe. Den Code habe ich mir unter anderem hier zusammen gesucht.
Delphi-Quellcode:
Type
   TForm1 = Class(TForm)
                      Image1 : TImage;
                   End;
...

Procedure TForm1.Image1Click(Sender: TObject);
Var
   FlipBild : TGPBitmap;
   Zeit : Int64;
Begin
   Zeit:=GetTickCount;
   FlipBild:=TGPBitmap.Create(Image1.Picture.Bitmap.Canvas.Handle,Image1.Picture.Bitmap.Palette);
   Try
      FlipBild.RotateFlip(Rotate90FlipNone);
   Finally
      FlipBild.Free;
   End;
   Zeit:=GetTickCount-Zeit;
   Caption:=Application.Title+' ['+FormatFloat('#,##0',Zeit)+' ms]';
End;

...

End.
Leider kann ich mit dem Ergebnis nichts anfangen. Ich weiß nicht, wie ich es wieder auf das TImage bzw. TImage.Bitmap bekomme oder abspeichern kann.
Das Beispiel mit der Uhr ist zwar genial; für mich aber zu kompliziert und mit 5 Units zu unübersichtlich. Ich habe genau 1 Mal die Funktion GdipCreateHBITMAPFromBitmap gefunden, konnte damit aber nichts anfangen. Die Syntax zeigt mir Delphi ja automatisch an. Aber ohne das Wissen über die Variablen und was die bewirken/speichern können, komme ich nicht weiter. Dazu müsste ich dann wieder was lesen und ...

Gute Nacht, Alex
Alex Winzer
  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:49 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