AGB  ·  Datenschutz  ·  Impressum  







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

nonVCL / jpeg laden und dc erhalten?

Ein Thema von unitedlb · begonnen am 18. Dez 2003 · letzter Beitrag vom 19. Dez 2003
Antwort Antwort
Seite 1 von 2  1 2      
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#1

nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 10:57
hallo!

hat jemand schon mal versucht ein jpeg nonVCL zu laden? gibt es dazu vielleicht
ein code-beispiel das jemand posten könnte?
bitmap ist kein problem, das habe ich mit loadimage gemacht aber bei
jpeg bin ich ratlos - vor allem brauche ich als rückgabe den dc.
habe in der suche schon mal soetwas ähnliches gefunden, allerdings
liefert diese funktion kein dc zurück.

danke für eure hilfe.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 11:20
Versucht habe ich das noch nicht, aber ich hab´s mal mit der Suchfunktion versucht.
Hier im Forum suchenjpeg nonvcl

Und jetzt sag nicht: "Nee du, das sind mir zuviele Beiträge."
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#3

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 13:45
ja, genau die habe ich auch schon gefunden, allerdings liefert diese
funktion kein dc zurück. und leider habe ich glaube ich zu wenig
ahnung um diese funktion in überschaubarer zeit umzuschreiben.

trotzdem danke.
  Mit Zitat antworten Zitat
scp

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

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 14:01
Teste mal:
Delphi-Quellcode:
var
  JpgDC : HDC;
  pPic : IPicture;
begin
//..
  pPic.get_CurDC(JpgDC);
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#5

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 14:03
genau das habe ich auch versucht, aber komme einfach nicht
drauf in welcher unit "ipicture" deklariert ist...
  Mit Zitat antworten Zitat
scp

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

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 14:41
Achso, wenns nur das ist:

Delphi-Quellcode:
uses
  ActiveX
PS: Du hast doch die Pro-Version. Wenn du dir nicht sicher bist, in welcher Unit eine Sache deklariert ist, dann such doch danach im Ordner "Source".
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 23:27
Ich hätte da wohl auch noch eine kleine Frage zu.

Ich müsste mit dieser Funktion auf ein TBitmap zeichnen können, nur leider klappt das scheinbar nur mit Nachfahren von TWinControl, wie z.B. TForm.
Ich habe die function wie folgt umgeschrieben:

Delphi-Quellcode:
function TmyJPEG.ShowImage(fileName: string; var hmWidth, hmHeight: Integer; wnd: HWND): hResult;
var DC : HDC;
    nWidth,
    nHeight : Integer;
    rc : TRect;
begin
  if LoadPicture(fileName) then
   begin
     DC := GetDC(wnd);

     if (pPicture.get_Width(hmWidth) = S_OK) and
        (pPicture.get_Height(hmHeight) = S_OK) and
        (GetClientRect(wnd, rc)) then
      begin
        nWidth := MulDiv(hmWidth, GetDeviceCaps(DC, LOGPIXELSX),2540);
        nHeight := MulDiv(hmHeight, GetDeviceCaps(DC, LOGPIXELSY),2540);

        pPicture.Render(DC, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, rc);
      end;

     ReleaseDC(wnd, DC);
   end;
end;
Sie ist Teil der Klasse "TmyJPEG", die aus nicht viel mehr besteht, wie der funktion "LoadImage" (wie in dem hier besprochenen Thread, nur mit'm try...finally drumrum), und eben "ShowImage".

Aufgerufen wird wie folgt:
TmyJPEG.ShowImage('C:\einJPG.jpg', x, y, TBitmap.Handle); (mal in Klassennamen geschrieben...)
x und y halten die Größe des Bildes (komischerweise mit 26,458333333... multipliziert, aber egal).

Wenn ich statt des "TBitmap.Handle" ein "TForm.Handle" übergebe klappt das ganze sehr prächtig! Nur MUSS ich in ein Bitmap zeichnen können, da ich
a) Die Scanline brauche und
b) das ganze in einem Thread passiert, und ein TForm hat da nix zu suchen (wiel nicht threadsicher)

Die Deklaration des Parameters "wnd: HWND" in "wnd: HBITMAP" zu ändern brachte leider keinen Erfolg. Und ich weiss leider noch nicht ganz die ganze Klamotte mit dc's und Handles und tüdeldü zu verstehen. (Bin aber dicht dran *g*)

Also Frage ist: Was kann ich tun, damit mir meine function auch in ein TBitmap rendert?


Herzlichen Dank schonmal!
mfg,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
scp

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

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 23:34
Ja, ja der Austausch zwischen DC und HBITMAP, das würde mich auch interessieren.

Bei TBitmap kannst du folgendes verwenden:
pPicture.Render(Bitmap1.Canvas.Handle, 0, 0, nWidth, nHeight, 0, hmHeight, hmWidth, -hmHeight, rc); Aber mal ne andere Frage:
Wenn du sowieso TBitmap benutzt, warum benutzt du dann nicht auch das normale TJPEGImage??
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 18. Dez 2003, 23:38
Soweit ich weiss ist TBitmap threadsicher, TJPEGImage hingegen nicht. Und ich schreib gerade ein Programm, mit dem ~30.000 Jpegs miteinander verglichen werden sollen (nach Inhalt...), und da das seine Zeit braucht wollte ich den ganzen Kram in einen 2. Thread auslagern, und nur onIdle rennen lassen. (Der PC wird noch anderweitig gebraucht!)

Ganz ganz heissen Dank für deinen Hinweis! Werde es direkt austesten!


Gruss,
dizzy


\edit: Und was soll ich sagen!? KLAPPT! Danggööööö
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
unitedlb

Registriert seit: 30. Sep 2003
73 Beiträge
 
Delphi 6 Professional
 
#10

Re: nonVCL / jpeg laden und dc erhalten?

  Alt 19. Dez 2003, 11:23
das mit dem ipicture hat geklappt.
wie kann ich denn ein jpeg aus einem file laden?
ich schreibe eine console-app...


danke.
  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 12:07 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