TRect Größe
-
hallo.
im forum habe ich einen code gefunden um ein zeichen um winkel x drehen zu können. ich verwende dafür die scriftart wingdings und einen pfeil. schon im damaligen thread (http://www.c-plusplus.net/forum/viewtopic-var-t-is-168885-and-highlight-is-pfeil.html) war die frage, warum ab einem bestimmten winkel nichts mehr zu sehen ist.Jansen antwortete:
"Stell dir den schrägen Text als Diagonale des zu übergebenden Rects vor.
Entsprechend gross muss letzteres definiert werden (mindestens)."ich konnte das icht umsetzen und hab was gefummelt. nun bekomme ich zwar den pfeil immer angezeigt, aber halt nie an einer festen position. ich muss aber noch eine linie an den pfeil ranzeichnen.
void pfeil_text(char *str,int X, int Y, double Angle) { frmMain->Canvas->Brush->Color=clWhite; int fontweight; DWORD fontitalic, fontunderline, fontstrikeout; if(frmMain->Canvas->Font->Style.Contains(fsBold)) fontweight = FW_BOLD; else fontweight = FW_NORMAL; if(frmMain->Canvas->Font->Style.Contains(fsItalic)) fontitalic = true; else fontitalic = false; if(frmMain->Canvas->Font->Style.Contains(fsUnderline)) fontunderline = true; else fontunderline = false; if(frmMain->Canvas->Font->Style.Contains(fsStrikeOut)) fontstrikeout = true; else fontstrikeout = false; HFONT hFont = CreateFont(frmMain->Canvas->Font->Height, 0, Angle*10, Angle*10, fontweight, fontitalic, fontunderline, fontstrikeout, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, frmMain->Canvas->Font->Name.c_str()); SelectObject(frmMain->Canvas->Handle, hFont); // HIER STAND EIGENTLICH: // TRect R(X,Y,X+frmMain->Canvas->TextWidth(str),Y+frmMain->Canvas->TextHeight(str)); // HIER NUN MEINE ABWANDLUNG: TRect R(X,Y,X+140,Y+140); if (Angle >= 180) { X += 50; Y += 30; } else if (Angle >= 145) { X += 15; Y += 30; } else if (Angle >= 115) { X += 10; Y += StrToInt(frmMain->Edit1->Text); } else { Y += StrToInt(frmMain->Edit1->Text); } frmMain->Canvas->TextRect(R, X, Y, str); // MEIN TEIL ENDE DeleteObject(hFont); }
-
dtp schrieb:
nun bekomme ich zwar den pfeil immer angezeigt, aber halt nie an einer festen position. ich muss aber noch eine linie an den pfeil ranzeichnen.
Falls du mit 'Pfeil' ein Zeichen aus dem WingDing-Font meinst: ist doch logisch, dass der Pfeilschaft je nach Drehung an einer anderen Stelle endet.
Jedes Zeichen ist ein Rechteck, in dem bestimmte Punkte eingefärbt sind. Bei der Ausgabe im Winkel dreht sich das Rechteck um seine linke obere Ecke, und nicht etwa um einen bestimmten eingefärbten Punkt.
-
ja einverstanden, aber bei meinen größendefinitionen ist es eben mal unten links, dann wieder ganz oben usw.
mich hätte interessiert wie der andere anwender das umgebaut hat.
-
Der 'andere Anwender' hat offenbar den Pfeil selbst gezeichnet.
-
nö. hat er nicht. egal.