hier ist der Code, den ich in OnPaint
Ereignis meiner Form haben:BeginPath TEXTOUT EndPath zieht invertierten Text
int elementCount;
String tStr = L"15:00";
::BeginPath(Canvas->Handle);
::TextOut(Canvas->Handle, 5, 5, tStr.c_str(), tStr.Length());
::EndPath(Canvas->Handle);
elementCount = ::GetPath(Canvas->Handle, NULL, NULL, 0);
Canvas->Brush->Color = clBlue;
Canvas->Pen->Color = clYellow;
Canvas->Pen->Width = 4;
if(0 < elementCount)
{
boost::scoped_array<TPoint> mPoints(new TPoint[elementCount]);
boost::scoped_array<BYTE> mTypes(new BYTE[elementCount]);
::GetPath(Canvas->Handle, mPoints.get(), mTypes.get(), elementCount);
::FillPath(Canvas->Handle);
::PolyDraw(Canvas->Handle, mPoints.get(), mTypes.get(), elementCount);
}
else
::StrokeAndFillPath(Canvas->Handle);
aber hier ist, was ich auf dem Formular erhalten:
als Sie können sehen, dass der Text invertiert ausgegeben wird (der Text muss blau und der Hintergrund grau sein, aber es ist andersherum und die gelbe Linie ist um den Hintergrund statt Text). Weiß jemand wie ich das beheben kann?
Ich benutze C++ Builder 10 Seattle, aber wenn jemand Delphi oder reinen C++ - Trick kennt, kann ich auch damit arbeiten.
Danke
Dank Akyuz. Der Trick bestand darin, 'Canvas-> Brush-> Style = bsClear;' direkt vor 'TextOut' hinzuzufügen. – Sam