AGB  ·  Datenschutz  ·  Impressum  







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

Handel-Zeichnen

Ein Thema von theomega · begonnen am 20. Dez 2002 · letzter Beitrag vom 20. Feb 2006
Antwort Antwort
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#1

Handel-Zeichnen

  Alt 20. Dez 2002, 10:45
Hallo
warum geht dieser Code nicht?
Code:
procedure TForm1.Button1Click(Sender: TObject);
var hd:HDC;
Brush: HBRUSH;
Pen: HPEN;
hd2:HDC;
begin
Brush := CreateSolidBrush(RGB(255,0,0));
SelectObject(hd, Brush);
Pen := CreatePen(PS_SOLID, 3, RGB(75,0,255));
SelectObject(hd, Pen);
Rectangle(hd, 10, 10, 375, 100);


hd2 := getdc(0);
BitBlt(hd2,20,20,50,50,hd,0,0,SRCCOPY );
end;
es sollte eingetlich in der linken oberen ecke ein Rechteck erscheinen. Das ganze ist als Beispiel gedacht, deshalb auch die Aktion mit dem BitBlt!

Danke

TO
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 20. Dez 2002, 11:11
Moin The Omega,

die Variable hd wird nicht initialisiert, und ist somit kein DC Handle, also geht das SelectObject wohl auch daneben.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#3
  Alt 20. Dez 2002, 11:14
Ja, genau da liegt mein Problem: ICh will das Objekt nur temporär haben, also nicht sichbar. Dann hilft mir "getdc" auch nicht weiter!
  Mit Zitat antworten Zitat
Benutzerbild von d3g
d3g

Registriert seit: 21. Jun 2002
602 Beiträge
 
#4
  Alt 20. Dez 2002, 12:09
Hi theomega,

was du dafür brauchst, sind CreateDC() und DeleteDC().

MfG,
d3g
-- Crucifixion?
-- Yes.
-- Good. Out of the door, line on the left, one cross each.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#5
  Alt 20. Dez 2002, 13:01
was ist den dann daran falsch?
Code:
procedure TForm1.Button1Click(Sender: TObject);
var hd:HDC;
Brush: HBRUSH;
Pen: HPEN;
hd2:HDC;
begin
hd := createdc('Display',nil,nil,nil);
Brush := CreateSolidBrush(RGB(255,0,0));
SelectObject(hd, Brush);
Pen := CreatePen(PS_SOLID, 3, RGB(75,0,255));
SelectObject(hd, Pen);
ellipse(hd,0,0,50,50);

hd2 := getdc(form1.Handle);
BitBlt(hd2,200,200,50,50,hd,0,0,SRCCOPY );

DeleteDC(hd);
end;
warum entsteht aber ein zweiter Kreis in der rechten oberen Ecke meines Bildschirms? Eignetlich müßte ja bloß einer auf meinem Form sein!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 20. Dez 2002, 13:16
Nö. Mit 'Display' holst du dir das Handle vom Desktop. Soll der Kreis nur auf deiner Form landen, mußt du dir mit GetDC und dem Fenster-Handle den DC holen und mit ReleaseDC wieder freigeben.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von theomega
theomega

Registriert seit: 18. Jun 2002
684 Beiträge
 
#7
  Alt 20. Dez 2002, 14:36
Ich brauche aber eine temporäres Object, also eins, das nicht angeziegt wird!
  Mit Zitat antworten Zitat
TReg

Registriert seit: 13. Feb 2006
Ort: Geldern
1 Beiträge
 
Delphi 7 Architect
 
#8

Re: Handel-Zeichnen

  Alt 19. Feb 2006, 15:29
CreateCompatibleDC wäre Temporär.....
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Handel-Zeichnen

  Alt 20. Feb 2006, 07:52
Außerdem solltest du die Geister, die du rufst, auch wieder gehen lassen:

CreateSolidBrush -> DeleteObject
CreatePen -> DeleteObject
GetDC -> ReleaseDC
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  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 08:34 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