E 'possibile antialias linee, cerchi, testo, ecc. esistenti di un singolo colore?

2

Voglio antialias manualmente l'output delle funzioni di disegno GDI su Windows. Ogni funzione di disegno viene sottoposta a rendering sulla propria immagine e quindi ripristinata (quindi l'alpha blending può funzionare, poiché GDI non lo fa in modo nativo), quindi l'immagine ha solo due colori: trasparente e il colore del disegno.

La mia domanda è semplice: esiste un modo per antialias di una linea, cerchio, testo, ecc. disegnati dopo il fatto a mano (in un ciclo)?

Ho trovato questo ma non ho idea di come funziona, o anche se funziona.

Preferirei non reimplementare i primitivi dei disegni da solo; se lo facessi, non avrei bisogno di usare GDI. Ho già un ciclo di premoltiplicazione alfa; posso fare l'antialiasing lì?

Aggiornamento 23 settembre 2014 / Domanda alternativa - c'è questo articolo CodeProject che suggerisce l'uso di HALFTONE blit stretching, tuttavia l'API GDI AlphaBlend() non lo supporta, e non sono sicuro che l'output dell'utilizzo di una terza immagine per eseguire il ridimensionamento dei mezzitoni sarà correttamente alpha-premoltiplied se il colore di input è; è?

    
posta andlabs 22.09.2014 - 18:28
fonte

1 risposta

1

Tecnicamente no, non puoi antialias una linea esistente perché non sai veramente dove sono i limiti della linea - o matematicamente dove la linea esiste in relazione ai pixel circostanti. Aggiungilo al fatto che la linea oscura effettivamente i pixel sottostanti - che non possono essere fusi in linea.

Potresti lisciare l'immagine; ma non credo che sia nemmeno vicino all'anti-aliasing.

    
risposta data 03.10.2014 - 01:05
fonte

Leggi altre domande sui tag