Einzelnen Beitrag anzeigen

Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Erkennen, ob ein Punkt zu einem Font dazu gehört

  Alt 8. Aug 2005, 14:30
@xaromz: danke für den Code, aber irgendwie bekomme ich damit auch keine runden kurven hin, sondern zu wieder pixelmäßig gerasterte. kannst ja mal selber diesen Beispielcode testen:
Delphi-Quellcode:
function TForm1.IsInChar(C: Char; X, Y: Double): Boolean;
var
  Region: HRGN;
begin
  BeginPath(Canvas.Handle);
  TextOut(Canvas.Handle, 0, 0, @C, 1);
  EndPath(Canvas.Handle);
  Region := PathToRegion(Canvas.Handle);
  Result := PtInRegion(Region, Trunc(X*Canvas.TextWidth(C)), Trunc(Y*Canvas.TextHeight(C)));

  DeleteObject(Region);
end;

procedure TForm1.Button1Click(Sender: TObject);
var x, y: Integer;
begin
  for y := 0 to ClientHeight-1 do
    for x := 0 to ClientWidth-1 do
      if IsInChar('A', x/ClientWidth, y/ClientHeight) then
        Canvas.Pixels[x,y] := clBlack
      else
        Canvas.Pixels[x,y] := clWhite;
end;
mich würde eher dieses GetGlyphOutline interessieren, damit kann ich mir ja die splines holen. wenn ich dann aber PtInRegion benutze, muss ich ja immer einen Canvas angeben, in den die Splines gezeichnet werden müssen, und schon habe ich wieder die gleichen kanten wie oben in dem code. bleibt mir da also nicht anderes übrig, als selber die splines zu untersuchen, oder gibt es auch Region-funtionen, die direkt mit den Splines arbeiten, ohne diese zu zeichnen? (hab da bisher nichts in der Richtung entdeckt).

oder ginge soetwas mit den Path-functions? bei denen habe ich allerdings nirgendwo so etwas wie PtInside oder so entdecken können.

@negaH:
ok, 300 stellen genauigkeit hat man nicht immer, das ist klar. aber lass uns diese diskussion hier beenden, das bringt nichts. wie gesagt, mir geht es darum Float-koordianten anzugeben (wie ich sie ja auch bei Path-functions haben müsste?)

edit: noch ne frage: wie kann ich eigentlich diese Path-functions dann letztendlich nutzen? so wie ich das in der Hilfe sehe ist das doch ne C++-Klasse, oder?
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat