AGB  ·  Datenschutz  ·  Impressum  







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

Image DC problem

Ein Thema von EWeiss · begonnen am 26. Mai 2007 · letzter Beitrag vom 27. Mai 2007
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

Image DC problem

  Alt 26. Mai 2007, 19:32
Hi

Kurze frage!
Warum kann ich aus meiner DLL nicht auf das hdc eines Images zeichnen ?

Image1.canvas.handle .. ist doch das HDC des Image-Control.

auf einen simplen Panel über Panel1.handle funktioniert es.

Die abfrage ist so ausgelegt.

Delphi-Quellcode:
       
BassWMPVis1.ContainerHdc := GetDC(VisWinhandle);
if BassWMPVis1.ContainerHdc = 0 then
  BassWMPVis1.ContainerHdc := VisWinhandle;
if BassWMPVis1.ContainerHdc = 0
benutze ich für das Image da dieses das HDC eigentlich direkt übergibt
GetDC ist deshalb = 0

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Image DC problem

  Alt 26. Mai 2007, 19:40
geht das nur nicht aus der dll heraus oder auch nicht aus dem Hauptprogramm direkt raus?
TImage.Canvas ist ein kleiner Sonderfall. Denn wenn du etwas auf diese Canvas zeichnest wird es wenn ich mich recht entsinne auch auf die Grafik gezeichnet (TImage.Picture.Graphic)
Demzufolge scheint da nicht das übliche Canvas dahinter zu stecken.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Image DC problem

  Alt 26. Mai 2007, 19:53
Zitat von SirThornberry:
geht das nur nicht aus der dll heraus oder auch nicht aus dem Hauptprogramm direkt raus?
TImage.Canvas ist ein kleiner Sonderfall. Denn wenn du etwas auf diese Canvas zeichnest wird es wenn ich mich recht entsinne auch auf die Grafik gezeichnet (TImage.Picture.Graphic)
Demzufolge scheint da nicht das übliche Canvas dahinter zu stecken.
Hmmm .. in meiner Anwendung kann ich es nicht testen
da die Visualisierung erst in meiner DLL erzeugt wird.

Gibt es eine alternative in Delphi ?
hab da nur noch PaintBox gefunden scheint aber auch nciht das richtige zu sein.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

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

Re: Image DC problem

  Alt 27. Mai 2007, 06:08
Ich würde für deinen Fall absolut zur Paintbox raten, bzw. zu allem anderen als TImage, was einen DC hat/bekommen kann. TImage hat einen ganzen Rattenschwanz an Beiwerk und Gedöns dabei die, wenn es nur darum geht eine Folge von Bildern hintereinander anzuzeigen, reiner Ballast für CPU und RAM sind. Wie auch der genannte Sonderfall bezgl. des Canvas, der im Grunde Anfängern wohl die Arbeit mit dem Image erleichtern soll, indem man "durch" den Image-Canvas auf den Picture-Canvas "hindurch" zeichnet. Das ist aber sowas von kein Standardverhalten.

[OT]
Ich selbst fand es zudem sehr verwirrend als ich Delphi/Programmieren gelernt hab - da wäre ein nettes Tutorial zu Hintergrund-Puffern und invalidate sowie der Paint-Methode sicher langfristig besser gewesen. Man fängt sonst schnell an, sich auf sowas zu verlassen, und auf einmal ist bei einer anderen ähnlichen Kompo das soeben gemalte Bild nicht in der gespeicherten Datei, und man wundert sich, manchmal tagelang. Ein deutlicher Hinweis mit Erklärung in der Hilfe würde aber ähnlich gute Arbeite leisten wie ein Tut .
[/OT]

Alternativ zur Paintbox ist für sowas auch ein TPanel ganz brauchbar. Halt immer vorausgesetzt, du hast nicht vor einzelne Bilder davon kompliziert weiterzuverarbeiten (als jpeg abspeichern o.ä.), sondern nur wie ein Video anzeigen. (Wobei ich vermutlich selbst dann noch von TImage abraten würde. Meiner Auffassung nach ist das halt echt nur zum Anzeigen statischer, oder selten wechselnder Grafiken, bzw. als netter .wmf-Lese/Schreibknecht.)
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Image DC problem

  Alt 27. Mai 2007, 08:17
HI

So wie ich festegestellt habe ist es definitiv so das TImage kein gültiges HDC zurückgibt.
Das erkennt man schon daran das ich nur über einen umweg mit CreatecompatibleDC
in der lage bin auf diesen zu zeichnen.

Habe mich dafür entschieden ein Panel mit einen aufgesetzen zweiten Panel zu verwenden.

EDIT:
Habe außerdem festgestellt (zufällig) das WindowBlinds nicht in der lage ist
ein Picture welches sich in einen TImage befindet zu erkennen.
Dieses ist bei aktivierten Skin nicht sichtbar.

Habe das gestern mal aus neugirde installiert .. dann aber schnell wieder deinstall

gruss Emil
  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 21:55 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