Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247

    Disegnare un rettangolo senza angoli arrotondati

    Nel mio programma, sto scrivendo una procedura per la stampa utilizzando esclusivamente le API di Windows.

    Sto componendo una tabella, e questo è il codice per disegnare la prima cella:

    codice:
              Polygon([
                Point(LeftStatus, TopStatus),
                  Point(LeftStatus + CmToDots(5.5), TopStatus),
                  Point(LeftStatus + CmToDots(5.5), TopStatus + AltezzaRiga),
                  Point(LeftStatus, TopStatus + AltezzaRiga)
                  ]);
    Non sto a spiegarvi il significato delle varie variabili, perché non è quello il problema...

    Il rettangolo viene disegnato correttamente, ma se la Pen.Width è abbastanza "spessa", il rettangolo viene stampato con gli angoli leggermente arrotondati! Se volete vi posto un PDF per farvi vedere meglio...

    Come faccio ad avere gli angoli belli netti?

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Non credo sia possibile soddisfare la tua richiesta, in quanto se usi una penna spessa e specifichi le stesse coordinate per i punti, tali coordinate saranno bordate con lo spessore della penna generando l'effetto incriminato.

    Quello che probabilmente dovresti disegnare è un rettangolo all'interno di un altro, cioè affiancare più segmenti all'interno del rettangolo senza ricorrere alla larghezza della penna.

    Perché non costruisci direttamente un rettangolo al posto di un poligono?

    In alternativa, potresti valutare l'uso di regioni per delimitare l'area interna da lasciare intatta e riempiendo un rettangolo escludendo la parte centrale.

    Sono le prime cose che mi sono venute in mente...

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Originariamente inviato da alka

    Perché non costruisci direttamente un rettangolo al posto di un poligono?

    Ciao!
    Hai ragione. Non ho consultato bene il manuale delle API di Windows. C'è una funzione, Rectangle(FHandle,X1,Y1,X2,Y2), che fa al caso mio. Il wrapper è Printer.Canvas.Rectangle(X1,Y1,X2,Y2) oppure Printer.Canvas.Rectangle(TRect).

    Comunque che fatica la stampa! Ho scritto più di 1000 righe di codice, tra paragrafi e tabelle. Sono stanco ma soddisfatto

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    247
    Ho un altro problema: non riesco a trovare una funzione che mi permetta di scrivere testo formattato. Devo stampare un paragrafo con varie righe che contiene alcune parole in grassetto. Come faccio senza dover inviare un migliaio di istruzioni?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.