AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Canvas.Handle via GetDC(Panel1.Handle)
Thema durchsuchen
Ansicht
Themen-Optionen

Canvas.Handle via GetDC(Panel1.Handle)

Ein Thema von EWeiss · begonnen am 27. Mai 2008 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
EWeiss
(Gast)

n/a Beiträge
 
#1

Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 11:45
Glaube nicht das ich blöd bin

PaintBox1.canvas.Handle = Result: Handle Device Contex(PaintBox1)
GetDC(Panel1.Handle) = Result: Handle Device Contex(Panel1)

jetzt sag mir mal einer warum das eine funktioniert und das andere nicht.

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 11:59
Bitte, was hast du da geschrieben?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 12:08
Zitat von sirius:
Bitte, was hast du da geschrieben?
verstehe deine Frage nicht.

PaintBox1.canvas.Handle = HDC oder ?
GetDC ermittelt das Handle eines Anzeige-Gerätekontextes [DC] für den Clientbereich eines Fensters.

dürfte in beiden fällen das gleiche sein oder ?

Warum geht das eine und das andere nicht ?
Auf das ermittelte DC über GetDC kann ich zeichnen auf PaintBox1 nicht ?

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 12:40
Ich kann auf beidem zeichnen:
Delphi-Quellcode:
  dc:=getdc(Panel1.Handle);
  rectangle(dc,10,10,40,40);
  releasedc(Panel1.Handle,dc);

  dc:=Paintbox1.Canvas.Handle;
  rectangle(dc,10,10,40,40);
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 12:55
Zitat von sirius:
Ich kann auf beidem zeichnen:
Delphi-Quellcode:
  dc:=getdc(Panel1.Handle);
  rectangle(dc,10,10,40,40);
  releasedc(Panel1.Handle,dc);

  dc:=Paintbox1.Canvas.Handle;
  rectangle(dc,10,10,40,40);
Dann bitte warum gehts bei dir und nicht bei mir
Beides das gleiche..

wobei du dir unten das dc als Variable hättest sparen können
denn Paintbox1.Canvas.Handle ist DC

rectangle(Paintbox1.Canvas.Handle,10,10,40,40); Aber trotzdem geht nur die eine variante bei mir.
Mit GetDc über das Window Handle von Panel1

gruss Emil
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 12:59
Bei mir geht das aber auch. Vielleicht liegt der Fehler ganz woanders?

[edit] Glückwunsch zum 1000. Beitrag [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 13:05
du hast vielleicht an irgendwelchen Farben gedreht, sodass dein Objekt unsichtbar wird. Oder es wird durch irgendetwas überzeichnet. Vielleicht ein RePaint?
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 13:07
Zitat von DeddyH:
Bei mir geht das aber auch. Vielleicht liegt der Fehler ganz woanders?

[edit] Glückwunsch zum 1000. Beitrag [/edit]
Danke ... danke
Achte auf sowas gar nicht. hiihihih

Ich übergebe das DC an meine DLL (BAssVis)
Über GetDC funktioniert es aber nicht über das direkte DC 'canvas.handle' was auch immer Image oder paintBox

SON_PaintHandle : DWORD; // Als DWORD da GetDC Cardinal zurückgibt
Delphi-Quellcode:
    BASSVISKIND_SONIQUE:
    begin
      _HDC := GetDc(Panel1.handle);
      If optPanel.checked = True Then
      begin
        mExec.AMP_SON_Pluginfile := PChar(pathlist.Strings[IndexNum]);
        mExec.SON_ConfigFile := PChar(PluginDir + '\vis.ini');
        mExec.SON_Flags := 0;
        mExec.SON_PaintHandle := _HDC;
        mExec.Left := 0;
        mExec.Top := 0;
        mExec.Width := Panel1.Width;
        mExec.Height := Panel1.Height;

        BASSVIS_ExecutePlugin(@mExec, mVisParam);
        ini := TIniFile.Create(ChangeFileExt(application.exename, '.ini'));
        sliSlowfade.Position := ini.ReadInteger('PluginType', 'Slowfade', 2);
        ini.Free;
      end;
funktioniert ohne problem

Delphi-Quellcode:
    BASSVISKIND_SONIQUE:
    begin
      If optPanel.checked = True Then
      begin
        mExec.AMP_SON_Pluginfile := PChar(pathlist.Strings[IndexNum]);
        mExec.SON_ConfigFile := PChar(PluginDir + '\vis.ini');
        mExec.SON_Flags := 0;
        mExec.SON_PaintHandle := PaintBox1.Canvas.Handle;
        mExec.Left := 0;
        mExec.Top := 0;
        mExec.Width := PaintBox1.Width;
        mExec.Height := PaintBox1.Height;

        BASSVIS_ExecutePlugin(@mExec, mVisParam);
        ini := TIniFile.Create(ChangeFileExt(application.exename, '.ini'));
        sliSlowfade.Position := ini.ReadInteger('PluginType', 'Slowfade', 2);
        ini.Free;
      end;
geht nicht.. hmmmmm

gruss Emil
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#9

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 14:47
Zitat von sirius:
du hast vielleicht an irgendwelchen Farben gedreht, sodass dein Objekt unsichtbar wird. Oder es wird durch irgendetwas überzeichnet. Vielleicht ein RePaint?
Denke nicht das was überschrieben wird.

habe jetzt mal nen test gemacht.

Delphi-Quellcode:
dc : HDC
dc := paintbox1.Canvas.Handle;

BASS_SONIQUEVIS_Render(vischan, RecChan, dc);
funktioniert nicht..

BASS_SONIQUEVIS_Render(vischan, RecChan, frmMain.paintbox1.Canvas.Handle); funktioniert ...

verdammt nochmal irgendwo muss doch eine unterschied sein
das beide (gleiche) aufrufe unterschiedliche ergebnisse haben.

Macht auch keinen unterschied ob isch dc als DWORD oder Cardinal deklariere
geht alles nicht.

gruss Emil
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Canvas.Handle via GetDC(Panel1.Handle)

  Alt 27. Mai 2008, 15:24
Hast du schon mal die beiden Werte als Zahl angeschaut? Eventuell kommt ja doch im nicht funktionierenden Fall etwas unterschiedliches heraus, und am Ende ist es gar nicht sicher, dass beides das selbe ist.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  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 08:59 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