खोज…
पैरामीटर
पैरामीटर | विवरण |
---|---|
DecodePixelWidth | निर्दिष्ट चौड़ाई के साथ BitmapImage लोड करेगा। स्क्रीन पर छोटे प्रदर्शित होने वाली बड़ी छवियों को लोड करते समय मेमोरी उपयोग और गति के साथ मदद करता है। यह पूर्ण छवि लोड करने से अधिक कुशल है और आकार परिवर्तन करने के लिए Image नियंत्रण पर निर्भर है। |
DecodePixelHeight | DecodePixelHeight समान। यदि केवल एक पैरामीटर निर्दिष्ट किया गया है तो सिस्टम आवश्यक आकार में लोड करते समय छवि के पहलू अनुपात को बनाए रखेगा। |
छवि नियंत्रण के साथ BitmapImage का उपयोग करना
<Image x:Name="MyImage" />
// Show image from web
MyImage.Source = new BitmapImage(new Uri("http://your-image-url.com"))
// Show image from solution
MyImage.Source = new Uri("ms-appx:///your-image-in-solution", UriKind.Absolute)
// Show image from file
IRandomAccessStreamReference file = GetFile();
IRandomAccessStream fileStream = await file.OpenAsync();
var image = new BitmapImage();
await image.SetSourceAsync(fileStream);
MyImage.Source = image;
fileStream.Dispose(); // Don't forget to close the stream
RenderTargetBitmap के साथ छवि के लिए रेंडरिंग नियंत्रण
<TextBlock x:Name="MyControl"
Text="Hello, world!" />
var rtb = new RenderTargetBitmap();
await rtb.RenderAsync(MyControl); // Render control to RenderTargetBitmap
// Get pixels from RTB
IBuffer pixelBuffer = await rtb.GetPixelsAsync();
byte[] pixels = pixelBuffer.ToArray();
// Support custom DPI
DisplayInformation displayInformation = DisplayInformation.GetForCurrentView();
var stream = new InMemoryRandomAccessStream();
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, // RGB with alpha
BitmapAlphaMode.Premultiplied,
(uint)rtb.PixelWidth,
(uint)rtb.PixelHeight,
displayInformation.RawDpiX,
displayInformation.RawDpiY,
pixels);
await encoder.FlushAsync(); // Write data to the stream
stream.Seek(0); // Set cursor to the beginning
// Use stream (e.g. save to file)
परिवर्तित बिटमैप (जैसे क्लिपबोर्ड सामग्री से) पीएनजी के लिए
IRandomAccessStreamReference bitmap = GetBitmap();
IRandomAccessStreamWithContentType stream = await bitmap.OpenReadAsync();
BitmapDecoder decoder = await BitmapDecoder.CreateAsync(stream);
var pixels = await decoder.GetPixelDataAsync();
var outStream = new InMemoryRandomAccessStream();
// Create encoder for PNG
var encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, outStream);
// Get pixel data from decoder and set them for encoder
encoder.SetPixelData(decoder.BitmapPixelFormat,
BitmapAlphaMode.Ignore, // Alpha is not used
decoder.OrientedPixelWidth,
decoder.OrientedPixelHeight,
decoder.DpiX, decoder.DpiY,
pixels.DetachPixelData());
await encoder.FlushAsync(); // Write data to the stream
// Here you can use your stream
छवि को XAML में लोड करें
<Image Source="ms-appx:///Assets/Windows_10_Hero.png"/>
आपकी छवि एसेट्स फ़ोल्डर में एप्लिकेशन का हिस्सा है, और Content
के रूप में चिह्नित है
<Image Source="ms-appdata:///local/Windows_10_Hero.png"/>
आपकी छवि आपके एप्लिकेशन के स्थानीय फ़ोल्डर में सहेजी गई थी
<Image Source="ms-appdata:///roaming/Windows_10_Hero.png"/>
आपकी छवि आपके एप्लिकेशन के रोमिंग फ़ोल्डर में सहेजी गई थी
कोड में आस्तियों से छवि लोड करें
ImageSource result = new BitmapImage(new Uri("ms-appx:///Assets/Windows_10_Hero.png"));
एक Binding
या कोड-पीछे यद्यपि Image
नियंत्रण के Source
गुण सेट करने के लिए परिणाम का उपयोग करें
StorageFile से लोड छवि
public static async Task<ImageSource> FromStorageFile(StorageFile sf)
{
using (var randomAccessStream = await sf.OpenAsync(FileAccessMode.Read))
{
var result = new BitmapImage();
await result.SetSourceAsync(randomAccessStream);
return result;
}
}
एक Binding
या कोड-पीछे यद्यपि Image
नियंत्रण के Source
गुण सेट करने के लिए परिणाम का उपयोग करें
उपयोगी जब आपको उन छवियों को खोलने की आवश्यकता होती है जो उपयोगकर्ता की डिस्क पर संग्रहीत होती हैं और आपके एप्लिकेशन के साथ शिप नहीं की जाती हैं
छवि को UI तत्व प्रदान करना
public static async Task<WriteableBitmap> RenderUIElement(UIElement element)
{
var bitmap = new RenderTargetBitmap();
await bitmap.RenderAsync(element);
var pixelBuffer = await bitmap.GetPixelsAsync();
var pixels = pixelBuffer.ToArray();
var writeableBitmap = new WriteableBitmap(bitmap.PixelWidth, bitmap.PixelHeight);
using (Stream stream = writeableBitmap.PixelBuffer.AsStream())
{
await stream.WriteAsync(pixels, 0, pixels.Length);
}
return writeableBitmap;
}
चूंकि WriteableBitmap
एक ImageSource
आप इसका उपयोग किसी छवि नियंत्रण के स्रोत गुण को सेट करने के लिए कर सकते हैं, हालांकि बाइंडिंग या कोड-पीछे
एक स्ट्रीम करने के लिए एक WriteableBitmap सहेजें
public static async Task<IRandomAccessStream> ConvertWriteableBitmapToRandomAccessStream(WriteableBitmap writeableBitmap)
{
var stream = new InMemoryRandomAccessStream();
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.JpegEncoderId, stream);
Stream pixelStream = writeableBitmap.PixelBuffer.AsStream();
byte[] pixels = new byte[pixelStream.Length];
await pixelStream.ReadAsync(pixels, 0, pixels.Length);
encoder.SetPixelData(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Ignore, (uint)writeableBitmap.PixelWidth, (uint)writeableBitmap.PixelHeight, 96.0, 96.0, pixels);
await encoder.FlushAsync();
return stream;
}
बिटमैप को फ़ाइल में सहेजने के लिए स्ट्रीम का उपयोग करें।
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow