Results 1 to 4 of 4

Thread: Canvas.TextWidth(...) geeft een fout melding

  1. #1

    Canvas.TextWidth(...) geeft een fout melding

    Hallo allemaal

    Wat is er mis met onderstaande procedure?
    Met een vriendelijke groet, Frans

    Code:
    procedure TForm1.FormPaint(Sender: TObject);
      var
        image: TBGRABitmap;
        C: TBGRAPixel;
        AText : String;
        ACanvas : TCanvas;
        W : Integer;
    
      begin
        AText := 'Hello world';
        ACanvas := TCanvas.Create;
        W := ACanvas.TextWidth(AText);   // **************************************  wat gaat hier fout
        Image := TBGRABitmap.Create(W,ClientHeight, ColorToBGRA(ColorToRGB(clBtnFace)) );
        C := ColorToBGRA(ColorToRGB(clBtnText)); //retrieve default text color
    
        Image.FontHeight := 30;
        Image.FontAntialias := true;
        Image.FontStyle := [fsBold];
        Image.TextOut(5,5,AText,C);
        Image.SetPixel(5,5,C);
    
        Image.Draw(Canvas,0,0,True);
        Image.free;
        ACanvas.Free;
      end;

  2. #2
    "Een foutmelding", iets specifieker graag (welke foutmelding, @runtime of @compile time).

  3. #3
    Bart,
    Bij het runnen van het programma geeft hij direct een fout melding bij de regel: W := ACanvas.TextWidth(AText);
    Frans

  4. #4
    Quote Originally Posted by Dubbeld View Post
    Bij het runnen van het programma geeft hij direct een fout melding bij de regel ...
    Leuk. We hebben het nog steeds over "een foutmelding".
    Welke was de vraag.

    Maar goed. TCanvas is een abstracte class die niet bedoeld om zo direct te gebruiken.

    Als je dat toch wilt doen zul je er een display device oid aan moeten hangen. Voeg bv dit toe na de create en dan zal het waarschijnlijk wel werken (met natuurlijk output naar screen).

    ACanvas := TCanvas.Create;
    ACanvas.Handle := GetDC(0);
    // ...
    ReleaseDC(0, ACanvas.Handle);
    ACanvas.free;

    Anders moet je een TBitmap of TControl gebruiken die ook een TCanvas hebben.
    Last edited by rvk; 23-Apr-22 at 07:55.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •