Delen via


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.

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

ID2D1Effect-