Bagikan melalui


struktur DXGK_GDIARG_STRETCHBLT (d3dkmddi.h)

Struktur DXGK_GDIARG_STRETCHBLT menjelaskan karakteristik operasi transfer blok bit (bitblt) yang dipercepat perangkat keras GDI.

Sintaks

typedef struct _DXGK_GDIARG_STRETCHBLT {
  [in] RECT  SrcRect;
  [in] RECT  DstRect;
  [in] UINT  DstAllocationIndex;
  [in] UINT  SrcAllocationIndex;
       UINT  NumSubRects;
  [in] RECT  *pSubRects;
  union {
    struct {
      UINT Mode : 16;
      UINT MirrorX : 1;
      UINT MirrorY : 1;
    };
    [in] UINT Flags;
  };
  [in] UINT  SrcPitch;
} DXGK_GDIARG_STRETCHBLT;

Anggota

[in] SrcRect

Struktur RECT yang menentukan area persegi panjang yang akan disalin. Persegi panjang ini ditentukan dalam sistem koordinat permukaan sumber dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.

Persegi panjang sumber tidak akan pernah melebihi batas permukaan sumber, sehingga tidak akan pernah menimpa permukaan sumber.

Persegi panjang ini dipetakan ke persegi tujuan yang ditentukan oleh DstRect.

Untuk informasi lebih lanjut, lihat bagian Keterangan.

[in] DstRect

Struktur RECT yang menentukan area persegi panjang yang akan dimodifikasi. Persegi panjang ini ditentukan dalam sistem koordinat permukaan tujuan dan didefinisikan oleh dua titik: kiri atas dan kanan bawah. Persegi panjang eksklusif kanan bawah; artinya, tepi bawah dan kanannya bukan bagian dari transfer blok bit. Dua titik yang menentukan persegi panjang selalu diurutkan dengan baik.

Persegi panjang tujuan yang ditentukan oleh DstRect dapat melebihi batas permukaan tujuan, tetapi sub-persegi panjang tidak dapat. Selain itu, semua sub-persegi panjang dijamin pas di dalam permukaan tujuan. Sub-persegi panjang dapat dibatasi lebih lanjut oleh persegi panjang pembatas yang lebih kecil dari persegi panjang tujuan.

Untuk informasi lebih lanjut, lihat bagian Keterangan.

[in] DstAllocationIndex

Indeks elemen dalam daftar alokasi yang menentukan alokasi yang direferensikan oleh persegi tujuan DstRect .

[in] SrcAllocationIndex

Indeks elemen dalam daftar alokasi yang menentukan alokasi yang direferensikan oleh persegi sumber SrcRect.

NumSubRects

Jumlah sub-persegi panjang di ruang permukaan tujuan yang dibatasi oleh persegi tujuan DstRect .

[in] pSubRects

Penunjuk ke sub-persegi di ruang permukaan tujuan yang dibatasi oleh persegi tujuan DstRect .

[in] Mode

Menentukan bagaimana piksel sumber digabungkan untuk menghasilkan piksel output berdasarkan apakah nilai berikut yang ditentukan dalam Wingdi.h diatur:

Nilai Makna
BLACKONWHITE Pada transfer bit-block yang menyusut, piksel harus dikombinasikan dengan operasi Boolean AND. Pada transfer blok bit yang membentang, piksel harus direplikasi.
WHITEONBLACK Pada transfer bit-block yang menyusut, piksel harus dikombinasikan dengan operasi Boolean OR. Pada transfer blok bit yang membentang, piksel harus direplikasi.

Jenis operasi ini akan diproses hanya jika driver telah mengatur anggota SupportMonoStretchBltModes dalam struktur DXGK_PRESENTATIONCAPS .

[in] MirrorX

Menentukan apakah transfer blok bit stretch akan dilakukan dalam mode cermin dalam xdirection. Jenis operasi ini akan diproses hanya jika nilai MirrorX bukan nol dan driver telah mengatur anggota SupportMirrorStretchBlt dalam struktur DXGK_PRESENTATIONCAPS .

[in] MirrorY

Menentukan apakah transfer blok bit peregangan akan dilakukan dalam mode cermin ke arah y. Jenis operasi ini akan diproses hanya jika nilai MirrorY bukan nol dan driver telah mengatur anggota SupportMirrorStretchBlt dalam struktur DXGK_PRESENTATIONCAPS .

[in] Flags

Nilai UINT opsional yang dapat digunakan untuk men-debug kode driver.

[in] SrcPitch

Pitch permukaan sumber, dalam byte.

Keterangan

Rasio peregangan x dan y dihitung masing-masing sebagai rasio ukuran x dan y anggota DstRect dan SrcRect .

Mode HALFTONE dan mode STRETCH_HALFTONE yang ditentukan dalam Wingdi.h tidak akan pernah diatur dalam anggota Mode . Mode COLORONCOLOR dapat diatur dalam struktur DXGK_GDIARG_ALPHABLEND dan DXGK_GDIARG_TRANSPARENTBLT .

Ketika sub-persegi panjang diubah ke ruang permukaan sumber, hasilnya dijamin berada di dalam permukaan sumber. Transformasi koordinat sub-persegi panjang di permukaan tujuan ke koordinat di permukaan sumber ditentukan oleh rumus berikut, di mana

  • (Xd, Yd) adalah titik di dalam sub-persegi
  • (Xs, Ys) adalah titik di dalam persegi panjang sumber
float Ws = SrcRect.right - SrcRect.left;
float Wd = DstRect.right - DstRect.left;
int Xs = round((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left - 0.5)
OR
int Xs = truncate((Xd - DstRect.left + 0.5) * Ws/Wd + SrcRect.left)

float Hs = SrcRect.bottom - SrcRect.top;
float Hd = DstRect.bottom - DstRect.top;
int Ys = round((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top - 0.5)
OR
int Ys = truncate((Yd - DstRect.top + 0.5) * Hs/Hd + SrcRect.top)

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7
Header d3dkmddi.h (termasuk D3dkmddi.h)

Lihat juga

DXGK_GDIARG_ALPHABLEND

DXGK_GDIARG_TRANSPARENTBLT

DXGK_PRESENTATIONCAPS

RECT