Dela via


stöd för Pseudo-Vector-grafik

Viktig

Den moderna utskriftsplattformen är Windows bästa sätt att kommunicera med skrivare. Vi rekommenderar att du använder Microsofts IPP-drivrutin för inkorgsklass tillsammans med Print Support Apps (PSA) för att anpassa utskriftsupplevelsen i Windows 10 och 11 för enhetsutveckling av skrivare.

Mer information finns i designguiden för Print-supportappen.

Enheter som inte stöder sann vektorgrafik kan dra nytta av det stöd som Unidrv tillhandahåller för pseudovector-grafik. När du använder den här funktionen laddar Unidrv ned helsvarta rektanglar och vågräta och lodräta linjer direkt till en icke-bevektorgrafikenhet, vilket minskar omkostnaderna för att återge dessa siffror på en rasteryta. Detta minskar också storleken på utdata, vilket kan förbättra skrivardataflödet för enheter som inte hanterar rasterdata effektivt.

För att dra nytta av den här funktionen behöver en minidrivrutin för en icke-vektorgrafikenhet endast stödja kommandot CmdRectBlackFill. Den här funktionen inaktiveras när funktionen utskriftsoptimering på fliken Avancerat på skrivarens egenskapssidor är inaktiverad.

Pseudovector-grafikfunktionen fångar upp anrop till DrvBitBlt, DrvStrokePathoch DrvLineToför att avgöra om en solid svart rektangel eller en lodrät eller vågrät linje ska ritas. När Unidrv identifierar figuren som ska ritas som en giltig rektangel (en som är helsvart, inte har något komplext urklipp och inte använder en ROP med hjälp av de aktuella målbitarna) lagras den i en rektangelmatris i stället för att ritas på ytan.

Den svåraste aspekten av pseudovector-grafikfunktionen är att undvika z-order-problem som orsakas av objekt som måste ritas ovanpå tidigare ritade objekt. Objekten ovanpå kan behöva radera eller skriva över en del av en svart rektangel. Om den svarta rektangeln redan har laddats ned till enheten kanske ett objekt som ritats senare på systemytan inte ritas korrekt.

Lösningen på det här problemet är att tillfälligt lagra en giltig rektangel i stället för att rita den direkt på ytan. När ett nytt objekt ska ritas på ytan kontrollerar Unidrv det för att se om objektet överlappar någon svart rektangel. I så fall ritas den överlappande delen av den svarta rektangeln först på ytan, innan det nya objektet ritas, vilket upprätthåller rätt z-ordning. Att rita rektangeln först tar också hänsyn till möjligheten att det nya objektet som ska ritas kan ha en ROP associerad med den, inklusive en som interagerar med målet.

Dessutom är det möjligt att det nya objektet som ska ritas innehåller komplexa urklipp så att den resulterande figuren inte längre är en rektangel. När band- eller sidåtergivningen är klar kan eventuella återstående svarta rektanglar laddas ned direkt till enheten utan att orsaka z-orderproblem. Unidrv har en lista med upp till 256 rektanglar per band och sammanfogar BitBlt-rektanglar där det är möjligt.

Problem med pseudovector-grafik

Pseudovector-grafikfunktionen kan ändra z-ordningen i vissa situationer, särskilt när text laddas ned direkt till enheten och efterföljande objekt med komplex beskärning måste interagera med den texten.