![]() |
SelectObject(hDC, hPen)
Hallo Forum,
ja, schon wieder ich und meine Device Contexts... Also, alles was ich will, ist mit bestimmtem Font und bestimmten Vorder- und Hintergrundfarben mit DrawText etwas auf einen DC zu zeichnen. Das mit dem Font funktioniert auch, nur mit Pen und Brush hab ich meine Probleme.
Code:
LIME_PEN und COLOR_BLACK sind korrekte Werte, SelectObject() funktioniert. GetStockObject führt nur dazu, dass SelectObject() fehlschlägt.
winDC := GetDC(hWnd);
Font := CreateFont(-MulDiv(8, GetDeviceCaps(winDC, LOGPIXELSY), 72), 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, 'MS Sans Serif'); SelectObject(winDC, Font); SelectObject(winDC, PEN_LIME); SelectObject(winDC, COLOR_BLACK); DrawText(winDC, PChar(s), Length(s), r, DT_TOP or DT_RIGHT); DeleteObject(Font); ReleaseDC(hWnd, winDC); Ich hoffe, ihr könnt mir helfen. Danke im Voraus, d3g [edit]Da hat was mit dem Code-Kopieren nicht geklappt...[/edit] |
Also....
Das Ding mit dem Pen: Das ist nur zum Zeichnen von Lienen und Kurven gedacht. Wenn du die Hintergrundfarbe und Schriftfarbe ändern willst, dann sind SetBkColor und SetTextColor deine Freunde. Beispiel:
Code:
Desweiteren war dein Versuch etwas daneben. Bei SelectObject muß man erst mal überhaupt ein Objekt erstellen. Also bei dem Ding mit dem Pen wäre das CreatePen, siehe Code.
var
winDC: HDC; Font, oldFont: HFONT; s: String; r: TRECT; myPen, oldPen: HPEN; begin r.Top := 10; r.Left := 10; r.Right := 100; r.Bottom := 50; s := 'dkfjavgkdjfbvkjadf'; winDC := GetDC(Handle); SetBkColor(winDC, RGB(255,0,0)); SetTextColor(winDC, RGB(0,255,0)); Font := CreateFont(-MulDiv(12, GetDeviceCaps(winDC, LOGPIXELSY), 72), 0, 0, 0, 0, 0, 0, 0, ANSI_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH, 'MS Sans Serif'); oldFont := SelectObject(winDC, Font); DrawText(winDC, PChar(s), Length(s), r, DT_TOP or DT_RIGHT); SelectObject(winDC, oldFont); DeleteObject(Font); myPen := CreatePen(PS_DASHDOTDOT, 1, RGB(0,255,0)); oldPen := SelectObject(winDC, myPen); MoveToEx(winDC, 50, 50, nil); LineTo(winDC, 150,150); SelectObject(winDC, oldPen); DeleteObject(myPen); ReleaseDC(Handle, winDC); end; Dann wird noch empfohlen vor dem Löschen des Objektes erst wieder das alte Objekt einzusetzen, sieh Code. |
:D :D :D
Danke! [edit]PS. Wie ich geschrieben habe, der Pen war schon erstellt.[/edit] |
Nur damit du noch mal kuckst und die Änderungen mit bekommst. :mrgreen:
|
Hi Luckie,
ich glaub, wir reden aneinander vorbei. Was ich meinte ist diese Äußerung von dir: Zitat:
Zitat:
d3g |
Ach LIME_PEN und COLOR_BLACK sind Variablen wie mein myPen vom Typ HPEN oder wie? Ich habe es für Konstanten gehalten wegen der Schreibweise. Die Konstanten von CreateFont und DrawText hast du auch alle so geschrieben und es ist auch allgemein üblich sie groß zu schreiben und Unterstriche zu verwenden. Das mache ich nämlich auch immer so. Na dann ist ja alles in Ordnung, dann ziehe ich hier mit meinen Vorwurf zurück :angle2:.
Aber denk dran: Vor dem Löschen erst das alte Objekt wieder einsetzen. Hat bei mir zwar noch nie zu Problemen geführt, wenn ich es nicht mache, aber Microsoft emfiehlt es so. |
Hi Luckie,
die Schreibweise habe ich dem Brush COLOR_APPWORKSPACE und dem Pen DC_PEN angelehnt, sind aber beides HBRUSH und HPEN. MfG, d3g |
:hi:
Und genau damit hast du mich verwirrt, denn COLOR_APPWORKSPACE ist eien Konstante. Aber das Mißverständnis wäre ja geklärt. War es denn das, was du gesucht hast: SetBkColor und SettextColor? |
Zitat:
|
:mrgreen:
Ich denke da werd eich dem nächst noch mal meine Tutorials ergänzen müssen: Direkte Ausgaben auf dem Canvas von Text und Zeichnen. Demo-Programme hab eich da schon muß nur noch das Tutorial schreiben. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz