Gambar dan kuas gambar

Untuk menampilkan gambar, Anda dapat menggunakan objek Gambar atau objek ImageBrush . Objek Gambar merender gambar, dan objek ImageBrush melukis objek lain dengan gambar.

Apakah ini elemen yang tepat?

Gunakan elemen Gambar untuk menampilkan gambar yang berdiri sendiri di aplikasi Anda.

Gunakan ImageBrush untuk menerapkan gambar ke objek lain. Penggunaan untuk ImageBrush menyertakan efek dekoratif untuk teks, atau latar belakang untuk kontrol atau kontainer tata letak.

UWP dan WinUI 2

Penting

Informasi dan contoh dalam artikel ini dioptimalkan untuk aplikasi yang menggunakan SDK Aplikasi Windows dan WinUI 3, tetapi umumnya berlaku untuk aplikasi UWP yang menggunakan WinUI 2. Lihat referensi API UWP untuk informasi dan contoh spesifik platform.

Bagian ini berisi informasi yang Anda butuhkan untuk menggunakan kontrol di aplikasi UWP atau WinUI 2.

API untuk kontrol ini ada di namespace Windows.UI.Xaml.Controls dan Windows.UI.Xaml.Media .

Sebaiknya gunakan WinUI 2 terbaru untuk mendapatkan gaya dan templat terbaru untuk semua kontrol.

Mulai Windows 10, versi 1607, elemen Gambar mendukung gambar GIF animasi. Saat Anda menggunakan BitmapImage sebagai Sumber gambar, Anda dapat mengakses API BitmapImage untuk mengontrol pemutaran gambar GIF animasi. Untuk informasi selengkapnya, lihat Komentar di halaman kelas BitmapImage .

Catatan

Dukungan GIF animasi tersedia saat aplikasi Anda dikompilasi untuk Windows 10, versi 1607, dan berjalan pada versi 1607 (atau yang lebih baru). Saat aplikasi Anda dikompilasi untuk atau berjalan pada versi sebelumnya, bingkai pertama GIF ditampilkan, tetapi tidak dianimasikan.

Buat sebuah citra

Aplikasi WinUI 3 Gallery mencakup contoh interaktif sebagian besar kontrol, fitur, dan fungsi WinUI 3. Dapatkan aplikasi dari Microsoft Store atau dapatkan kode sumber di GitHub

Gambar

Contoh ini menunjukkan cara membuat gambar dengan menggunakan objek Gambar .

<Image Width="200" Source="sunset.jpg" />

Berikut adalah objek Gambar yang dirender.

Contoh elemen gambar

Dalam contoh ini, properti Sumber menentukan lokasi gambar yang ingin Anda tampilkan. Anda dapat mengatur Sumber dengan menentukan URL absolut (misalnya, http://contoso.com/myPicture.jpg) atau dengan menentukan URL yang relatif terhadap struktur kemasan aplikasi Anda. Misalnya, kami menempatkan file gambar "sunset.jpg" di folder akar proyek kami dan mendeklarasikan pengaturan proyek yang menyertakan file gambar sebagai konten.

ImageBrush

Dengan objek ImageBrush , Anda dapat menggunakan gambar untuk melukis area yang mengambil objek Brush . Misalnya, Anda dapat menggunakan ImageBrush untuk nilai properti IsianElips atau properti Latar BelakangKanvas.

Contoh berikutnya menunjukkan cara menggunakan ImageBrush untuk melukis Elips.

<Ellipse Height="200" Width="300">
   <Ellipse.Fill>
     <ImageBrush ImageSource="sunset.jpg" />
   </Ellipse.Fill>
</Ellipse>

Inilah Elips yang dilukis oleh ImageBrush.

Elips yang dicat oleh ImageBrush.

Meregangkan gambar

Jika Anda tidak mengatur nilai Lebar atau TinggiGambar, nilai tersebut ditampilkan dengan dimensi gambar yang ditentukan oleh Sumber. Mengatur Lebar dan Tinggi membuat area persegi panjang yang berisi tempat gambar ditampilkan. Anda dapat menentukan bagaimana gambar mengisi area yang berisi ini dengan menggunakan properti Stretch . Properti Stretch menerima nilai-nilai ini, yang didefinisikan oleh enumerasi Stretch :

  • Tidak ada: Gambar tidak meregang untuk mengisi dimensi output. Berhati-hatilah dengan pengaturan Stretch ini: jika gambar sumber lebih besar dari area yang berisi, gambar Anda akan dipotong, dan ini biasanya tidak diinginkan karena Anda tidak memiliki kontrol apa pun atas viewport seperti yang Anda lakukan dengan Klip yang disengaja.
  • Seragam: Gambar diskalakan agar sesuai dengan dimensi output. Tetapi rasio aspek konten dipertahankan. Ini adalah nilai default.
  • UniformToFill: Gambar diskalakan sehingga sepenuhnya mengisi area output tetapi mempertahankan rasio aspek aslinya.
  • Isi: Gambar diskalakan agar sesuai dengan dimensi output. Karena tinggi dan lebar konten diskalakan secara independen, rasio aspek asli gambar mungkin tidak dipertahankan. Artinya, gambar mungkin terdistorsi untuk sepenuhnya mengisi area output.

Contoh pengaturan peregangan.

Memangkas gambar

Anda dapat menggunakan properti Klip untuk mengklip area dari output gambar. Anda mengatur properti Klip ke Geometri. Saat ini, kliping non-persegi tidak didukung.

Contoh berikutnya menunjukkan cara menggunakan RectangleGeometry sebagai wilayah klip untuk gambar. Dalam contoh ini, kita mendefinisikan objek Gambar dengan tinggi 200. RectangleGeometry mendefinisikan persegi panjang untuk area gambar yang akan ditampilkan. Properti Rect diatur ke "25,25,100,150", yang mendefinisikan persegi panjang mulai dari posisi "25,25" dengan lebar 100 dan tinggi 150. Hanya bagian gambar yang berada di dalam area persegi panjang yang ditampilkan.

<Image Source="sunset.jpg" Height="200">
    <Image.Clip>
        <RectangleGeometry Rect="25,25,100,150" />
    </Image.Clip>
</Image>

Berikut adalah gambar yang dipotong pada latar belakang hitam.

Objek Gambar dipangkas oleh RectangleGeometry.

Menerapkan opasitas

Anda dapat menerapkan Opacity ke gambar sehingga gambar dirender semi-tembus. Nilai opasitas adalah dari 0,0 hingga 1,0 di mana 1,0 sepenuhnya buram dan 0,0 sepenuhnya transparan. Contoh ini menunjukkan cara menerapkan tingkat keburaman 0,5 ke Gambar.

<Image Height="200" Source="sunset.jpg" Opacity="0.5" />

Berikut adalah gambar yang dirender dengan tingkat keburaman 0,5 dan latar belakang hitam yang menunjukkan melalui tingkat keburaman parsial.

Objek Gambar dengan tingkat keburaman .5.

Format file gambar

Gambar dan ImageBrush dapat menampilkan format file gambar ini:

  • Joint Photographic Experts Group (JPEG)
  • Grafis Jaringan Portabel (PNG)
  • bitmap (BMP)
  • Format Pertukaran Grafis (GIF)
  • Format File Gambar Bertag (TIFF)
  • JPEG XR
  • ikon (ICO)

API untuk Gambar, BitmapImage , dan BitmapSource tidak menyertakan metode khusus untuk pengodean dan pendekodean format media. Semua operasi pengodean dan dekode adalah bawaan, dan paling banyak akan menampilkan aspek pengodean atau dekode sebagai bagian dari data peristiwa untuk peristiwa beban. Jika Anda ingin melakukan pekerjaan khusus dengan enkode gambar atau dekode, yang mungkin Anda gunakan jika aplikasi Anda melakukan konversi gambar atau manipulasi, Anda harus menggunakan API yang tersedia di namespace Windows.Graphics.Imaging . API ini juga didukung oleh Komponen Pencitraan Windows (WIC) di Windows.

Untuk informasi selengkapnya tentang sumber daya aplikasi dan cara mengemas sumber gambar dalam aplikasi, lihat Memuat gambar dan aset yang disesuaikan untuk skala, tema, kontras tinggi, dan lainnya.

WriteableBitmap

WriteableBitmap menyediakan BitmapSource yang dapat dimodifikasi dan yang tidak menggunakan decoding berbasis file dasar dari WIC. Anda dapat mengubah gambar secara dinamis dan merender ulang gambar yang diperbarui. Untuk menentukan konten buffer writeableBitmap, gunakan properti PixelBuffer untuk mengakses buffer dan menggunakan jenis buffer khusus aliran atau bahasa untuk mengisinya. Misalnya kode, lihat WriteableBitmap.

RenderTargetBitmap

Kelas RenderTargetBitmap dapat mengambil pohon UI XAML dari aplikasi yang sedang berjalan, lalu mewakili sumber gambar bitmap. Setelah diambil, sumber gambar tersebut dapat diterapkan ke bagian lain aplikasi, disimpan sebagai sumber daya atau data aplikasi oleh pengguna, atau digunakan untuk skenario lain. Salah satu skenario yang sangat berguna adalah membuat gambar mini runtime halaman XAML untuk skema navigasi. RenderTargetBitmap memang memiliki beberapa batasan pada konten yang akan muncul dalam gambar yang diambil. Untuk informasi selengkapnya, lihat topik referensi API untuk RenderTargetBitmap.

Sumber dan penskalakan gambar

Anda harus membuat sumber gambar pada beberapa ukuran yang direkomendasikan, untuk memastikan bahwa aplikasi Anda terlihat hebat saat Windows menskalakannya. Saat menentukan Sumber untuk Gambar, Anda dapat menggunakan konvensi penamaan yang akan secara otomatis mereferensikan sumber daya yang benar untuk penskalaan saat ini. Untuk detail konvensi penamaan dan info selengkapnya, lihat Mulai Cepat: Menggunakan sumber daya file atau gambar.

Untuk informasi selengkapnya tentang cara mendesain penskalaan, lihat Panduan UX untuk tata letak dan penskalaan.

Gambar dan ImageBrush dalam kode

Ini khas untuk menentukan elemen Image dan ImageBrush menggunakan XAML daripada kode. Ini karena elemen-elemen ini sering kali merupakan output alat desain sebagai bagian dari definisi UI XAML.

Jika Anda menentukan Gambar atau ImageBrush menggunakan kode, gunakan konstruktor default, lalu atur properti sumber yang relevan (Image.Source atau ImageBrush.ImageSource). Properti sumber memerlukan BitmapImage (bukan URI) saat Anda mengaturnya menggunakan kode. Jika sumber Anda adalah aliran, gunakan metode SetSourceAsync untuk menginisialisasi nilai. Jika sumber Anda adalah URI, yang menyertakan konten di aplikasi Anda yang menggunakan skema ms-appx atau ms-resource , gunakan konstruktor BitmapImage yang mengambil URI. Anda mungkin juga mempertimbangkan untuk menangani peristiwa ImageOpened jika ada masalah waktu dengan mengambil atau mendekode sumber gambar, di mana Anda mungkin memerlukan konten alternatif untuk ditampilkan hingga sumber gambar tersedia. Misalnya kode, lihat sampel Galeri WinUI.

Catatan

Jika Anda membuat gambar menggunakan kode, Anda dapat menggunakan penanganan otomatis untuk mengakses sumber daya yang tidak memenuhi syarat dengan kualifikasi skala dan budaya saat ini, atau Anda dapat menggunakan ResourceManager dan ResourceMap dengan kualifikasi untuk budaya dan skala untuk mendapatkan sumber daya secara langsung. Untuk informasi selengkapnya lihat Sistem manajemen sumber daya.

Dapatkan kode sampel