Bitmapbroneffect
Gebruik het bitmapbroneffect om een ID2D1Image- te genereren op basis van een IWICBitmapSource- voor gebruik als invoer in een effectgrafiek. Dit effect voert schaalaanpassing en rotatie uit op de CPU. Het kan ook optioneel een mipmap van het systeemgeheugen genereren, wat een prestatieoptimalisatie kan zijn voor het actief schalen van zeer grote afbeeldingen op verschillende gereduceerde resoluties.
Notitie
Het bitmapbroneffect krijgt de invoer als eigenschap, niet als afbeeldingsinvoer. U moet de methode SetValue gebruiken, niet de methode SetInput. In de eigenschap WicBitmapSource geeft u de invoergegevens van de afbeelding op.
De CLSID voor dit effect is CLSID_D2D1BitmapSource.
- eigenschappen van effect
- interpolatiemodi
- afdrukstand
- Alfa-modi
- opmerkingen
- vereisten
- Verwante onderwerpen
Effecteigenschappen
Weergavenaam en indexenumeratie | Beschrijving |
---|---|
WicBitmapSource D2D1_BITMAPSOURCE_PROP_WIC_BITMAP_SOURCE |
De IWICBitmapSource met de afbeeldingsgegevens die moeten worden geladen. Het type is IWICBitmapSource. De standaardwaarde is NULL. |
Schub D2D1_BITMAPSOURCE_PROP_SCALE |
Het schaalbedrag in de X- en Y-richting. Het effect vermenigvuldigt de breedte met de X-waarde en de hoogte met de Y-waarde. Deze eigenschap is een D2D1_VECTOR_2F gedefinieerd als: (X-schaal, Y-schaal). De schaalbedragen zijn FLOAT, unitless en moeten positief of 0 zijn. Het type is D2D1_VECTOR_2F. De standaardwaarde is {1.0f, 1.0f}. |
InterpolationMode. D2D1_BITMAPSOURCE_PROP_INTERPOLATION_MODE |
De interpolatiemodus die wordt gebruikt om de afbeelding te schalen. Zie Interpolatiemodi voor meer informatie. Als de mipmap wordt uitgeschakeld in de modus, slaat BitmapSouce de afbeelding in de cache op in de resolutie die wordt bepaald door de eigenschappen Scale and EnableDPICorrection. Het type is D2D1_BITMAPSOURCE_INTERPOLATION_MODE. De standaardwaarde is D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR. |
EnableDPICorrection D2D1_BITMAPSOURCE_PROP_ENABLE_DPI_CORRECTION |
Als u dit instelt op TRUE, wordt de invoerafbeelding geschaald om de DPI te converteren die is gerapporteerd door IWICBitmapSource naar de DPI van de apparaatcontext. Het effect gebruikt de interpolatiemodus die u instelt met de eigenschap InterpolationMode. Als u dit instelt op FALSE, gebruikt het effect een DPI van 96.0 voor de uitvoerafbeelding. Het type is BOOL. De standaardwaarde is FALSE. |
AlphaMode D2D1_BITMAPSOURCE_PROP_ALPHA_MODE |
De alfamodus van de uitvoer. Dit kan vooraf of recht worden gepremultipeerd. Zie Alpha-modi voor meer informatie. Het type is D2D1_BITMAPSOURCE_ALPHA_MODE. De standaardwaarde is D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED. |
Oriëntatie D2D1_BITMAPSOURCE_PROP_ORIENTATION |
Een draai- en/of draaibewerking die op de afbeelding moet worden uitgevoerd. Zie Afdrukstand voor meer informatie. Het type is D2D1_BITMAPSOURCE_ORIENTATION. De standaardwaarde is D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT. |
Interpolatiemodi
Het effect interpoleert het gebruik van deze modus wanneer een afbeelding wordt geschaald of wanneer de DPI wordt gecorrigeerd. De interpolatiemodi die door dit effect worden gebruikt, worden berekend door de CPU, niet de GPU.
Naam | Beschrijving |
---|---|
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_NEAREST_NEIGHBOR | Steekt het dichtstbijzijnde single point in en gebruikt dat. Er wordt geen mipmap gegenereerd. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_LINEAR | Maakt gebruik van een voorbeeld van vier punten en lineaire interpolatie. Er wordt geen mipmap gegenereerd. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_CUBIC | Maakt gebruik van een 16 voorbeeldkubieke kernel voor interpolatie. Er wordt geen mipmap gegenereerd. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_FANT | Maakt gebruik van wic-fantinterpolatie, hetzelfde als de IWICBitmapScaler interface. Er wordt geen mipmap gegenereerd. |
D2D1_BITMAPSOURCE_INTERPOLATION_MODE_MIPMAP_LINEAR | Hiermee genereert u mipmap-keten in het systeemgeheugen met bilineaire interpolatie. Voor elke mipmap wordt het effect geschaald naar het dichtstbijzijnde veelvoud van 0,5 met behulp van bilineaire interpolatie en wordt vervolgens de resterende hoeveelheid geschaald met behulp van lineaire interpolatie. |
Oriëntatie
De eigenschap Afdrukstand kan worden gebruikt om een EXIF-afdrukstandsvlag toe te passen die is ingesloten in een afbeelding.
Naam | Beschrijving |
---|---|
D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT | Verstek. Het effect wijzigt de afdrukstand van de invoer niet. |
D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL | Hiermee wordt de afbeelding horizontaal gespiegeld. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180 | Hiermee draait u de afbeelding rechtsom 180 graden. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL | Hiermee draait u de afbeelding rechtsom 180 graden en spiegelt u deze horizontaal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL | Hiermee draait u de afbeelding rechtsom 270 graden en spiegelt u deze horizontaal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90 | Hiermee draait u de afbeelding naar rechtsom 90 graden. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL | Hiermee draait u de afbeelding 90 graden naar rechts en spiegelt u deze horizontaal. |
D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270 | Hiermee draait u de afbeelding rechtsom 270 graden. |
Dit codefragment laat zien hoe u kunt converteren van EXIF-oriëntatiewaarden (gedefinieerd in propkey.h) naar D2D1_BITMAPSOURCE_ORIENTATION waarden.
#include <propkey.h>
#include <d2d1effects.h>
D2D1_BITMAPSOURCE_ORIENTATION GetBitmapSourceOrientation(unsigned short PhotoOrientation)
{
switch (PhotoOrientation)
{
case PHOTO_ORIENTATION_NORMAL:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
case PHOTO_ORIENTATION_FLIPHORIZONTAL:
return D2D1_BITMAPSOURCE_ORIENTATION_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE180:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180;
case PHOTO_ORIENTATION_FLIPVERTICAL:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE180_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_TRANSPOSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE270:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE90;
case PHOTO_ORIENTATION_TRANSVERSE:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270_FLIP_HORIZONTAL;
case PHOTO_ORIENTATION_ROTATE90:
return D2D1_BITMAPSOURCE_ORIENTATION_ROTATE_CLOCKWISE270;
default:
return D2D1_BITMAPSOURCE_ORIENTATION_DEFAULT;
}
}
Alfamodi
Naam | Beschrijving |
---|---|
D2D1_BITMAPSOURCE_ALPHA_MODE_PREMULTIPLIED | De effectuitvoer maakt gebruik van vooraf samengestelde alfa. |
D2D1_BITMAPSOURCE_ALPHA_MODE_STRAIGHT | De effectuitvoer maakt gebruik van rechte alfa. |
Opmerkingen
Als u de prestaties wilt optimaliseren bij het gebruik van WIC en Direct2D-, moet u IWICFormatConverter gebruiken om te converteren naar een geschikte pixelindeling op basis van het scenario van uw app en de systeemeigen precisie van de afbeelding.
In de meeste gevallen vereist uw app Direct2D pijplijn slechts 8 bits per kanaal (bpc) precisie, of de afbeelding biedt slechts 8 bpc-precisie. Daarom moet u converteren naar GUID_WICPixelFormat32bppPBGRA. Als u echter wilt profiteren van extra precisie van een afbeelding (bijvoorbeeld een JPEG-XR of TIFF die is opgeslagen met meer dan 8 bpc-precisie), moet u een pixelindeling op basis van RGBA gebruiken. In de onderstaande tabel vindt u meer informatie.
Gewenste precisie | Systeemeigen precisie van de afbeelding | Aanbevolen pixelindeling |
---|---|---|
8 bits per kanaal | <= 8 bits per kanaal | GUID_WICPixelFormat32bppPBGRA |
Zo hoog mogelijk | <= 8 bits per kanaal | GUID_WICPixelFormat32bppPBGRA |
Zo hoog mogelijk | > 8 bits per kanaal | RGBA-kanaalvolgorde, vooraf gedefinieerde alfa |
Omdat veel afbeeldingsindelingen meerdere precisieniveaus ondersteunen, moet u IWICBitmapSource::Get PixelFormat gebruiken om de systeemeigen pixelindeling van de afbeelding te verkrijgen en vervolgens IWIC PixelFormatInfo gebruiken om te bepalen hoeveel bits per precisiekanaal beschikbaar zijn voor die indeling. Houd er ook rekening mee dat niet alle hardware ondersteuning biedt voor pixelindelingen met hoge precisie. In dergelijke gevallen moet uw app mogelijk terugvallen op het WARP-apparaat om hoge precisie te ondersteunen.
Eisen
Eis | Waarde |
---|---|
Minimaal ondersteunde client | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Minimaal ondersteunde server | Windows 8 en Platform Update voor Windows 7 [desktop-apps | Windows Store-apps] |
Rubriek | d2d1effects.h |
Bibliotheek | d2d1.lib, dxguid.lib |