WriteableBitmap Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
'a yazılabilen ve güncelleştirilebilen bir BitmapSource sağlar.
public ref class WriteableBitmap sealed : System::Windows::Media::Imaging::BitmapSource
public sealed class WriteableBitmap : System.Windows.Media.Imaging.BitmapSource
type WriteableBitmap = class
inherit BitmapSource
Public NotInheritable Class WriteableBitmap
Inherits BitmapSource
- Devralma
-
WriteableBitmap
Örnekler
Aşağıdaki örnek, fare hareket ettiğinde pikselleri çizmek için bir Image öğesinin kaynağı olarak nasıl WriteableBitmap kullanılabileceğini gösterir.
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Input;
namespace WriteableBitmapDemo
{
class Program
{
static WriteableBitmap writeableBitmap;
static Window w;
static Image i;
[STAThread]
static void Main(string[] args)
{
i = new Image();
RenderOptions.SetBitmapScalingMode(i, BitmapScalingMode.NearestNeighbor);
RenderOptions.SetEdgeMode(i, EdgeMode.Aliased);
w = new Window();
w.Content = i;
w.Show();
writeableBitmap = new WriteableBitmap(
(int)w.ActualWidth,
(int)w.ActualHeight,
96,
96,
PixelFormats.Bgr32,
null);
i.Source = writeableBitmap;
i.Stretch = Stretch.None;
i.HorizontalAlignment = HorizontalAlignment.Left;
i.VerticalAlignment = VerticalAlignment.Top;
i.MouseMove += new MouseEventHandler(i_MouseMove);
i.MouseLeftButtonDown +=
new MouseButtonEventHandler(i_MouseLeftButtonDown);
i.MouseRightButtonDown +=
new MouseButtonEventHandler(i_MouseRightButtonDown);
w.MouseWheel += new MouseWheelEventHandler(w_MouseWheel);
Application app = new Application();
app.Run();
}
// The DrawPixel method updates the WriteableBitmap by using
// unsafe code to write a pixel into the back buffer.
static void DrawPixel(MouseEventArgs e)
{
int column = (int)e.GetPosition(i).X;
int row = (int)e.GetPosition(i).Y;
try{
// Reserve the back buffer for updates.
writeableBitmap.Lock();
unsafe
{
// Get a pointer to the back buffer.
IntPtr pBackBuffer = writeableBitmap.BackBuffer;
// Find the address of the pixel to draw.
pBackBuffer += row * writeableBitmap.BackBufferStride;
pBackBuffer += column * 4;
// Compute the pixel's color.
int color_data = 255 << 16; // R
color_data |= 128 << 8; // G
color_data |= 255 << 0; // B
// Assign the color data to the pixel.
*((int*) pBackBuffer) = color_data;
}
// Specify the area of the bitmap that changed.
writeableBitmap.AddDirtyRect(new Int32Rect(column, row, 1, 1));
}
finally{
// Release the back buffer and make it available for display.
writeableBitmap.Unlock();
}
}
static void ErasePixel(MouseEventArgs e)
{
byte[] ColorData = { 0, 0, 0, 0 }; // B G R
Int32Rect rect = new Int32Rect(
(int)(e.GetPosition(i).X),
(int)(e.GetPosition(i).Y),
1,
1);
writeableBitmap.WritePixels( rect, ColorData, 4, 0);
}
static void i_MouseRightButtonDown(object sender, MouseButtonEventArgs e)
{
ErasePixel(e);
}
static void i_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
DrawPixel(e);
}
static void i_MouseMove(object sender, MouseEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
DrawPixel(e);
}
else if (e.RightButton == MouseButtonState.Pressed)
{
ErasePixel(e);
}
}
static void w_MouseWheel(object sender, MouseWheelEventArgs e)
{
System.Windows.Media.Matrix m = i.RenderTransform.Value;
if (e.Delta > 0)
{
m.ScaleAt(
1.5,
1.5,
e.GetPosition(w).X,
e.GetPosition(w).Y);
}
else
{
m.ScaleAt(
1.0 / 1.5,
1.0 / 1.5,
e.GetPosition(w).X,
e.GetPosition(w).Y);
}
i.RenderTransform = new MatrixTransform(m);
}
}
}
Açıklamalar
WriteableBitmap Bir bit eşlemi çerçeve temelinde güncelleştirmek ve işlemek için sınıfını kullanın. Bu, fraktal görüntü gibi algoritmik içerik oluşturmak ve müzik görselleştiricisi gibi veri görselleştirmesi için kullanışlıdır.
WriteableBitmap sınıfı iki arabellek kullanır. Arka arabellek sistem belleğinde ayrılır ve şu anda görüntülenmeyen içeriği biriktirir. Ön arabellek sistem belleğinde ayrılır ve şu anda görüntülenen içeriği içerir. İşleme sistemi ön arabelleği görüntü için video belleğine kopyalar.
İki iş parçacığı bu arabellekleri kullanır. Kullanıcı arabirimi (UI) iş parçacığı, kullanıcı arabirimini oluşturur ancak ekrana sunmaz. Kullanıcı arabirimi iş parçacığı kullanıcı girişlerine, zamanlayıcılara ve diğer olaylara yanıt verir. Bir uygulamanın birden çok kullanıcı arabirimi iş parçacığı olabilir. İşleme iş parçacığı, ui iş parçacığından değişiklikleri oluşturur ve işler. Uygulama başına yalnızca bir işleme iş parçacığı vardır.
Kullanıcı arabirimi iş parçacığı arka arabelleğe içerik yazar. İşleme iş parçacığı, içeriği ön arabellekten okur ve video belleğine kopyalar. Arka arabellekte yapılan değişiklikler değiştirilmiş dikdörtgen bölgeler ile izlenir.
Arka arabellekteki WritePixels içeriği otomatik olarak güncelleştirmek ve görüntülemek için aşırı yüklemelerden birini çağırın.
Güncelleştirmeler üzerinde daha fazla denetim ve arka arabelleğe çok iş parçacıklı erişim için aşağıdaki iş akışını kullanın.
Lock Geri arabelleği güncelleştirmeler için ayırmak için yöntemini çağırın.
özelliğine erişerek BackBuffer arka arabelleğe bir işaretçi alın.
Değişiklikleri arka arabelleğe yazın. Diğer iş parçacıkları, kilitlendiğinde WriteableBitmap arka arabelleğe değişiklikler yazabilir.
AddDirtyRect Değiştirilen alanları belirtmek için yöntemini çağırın.
Unlock Arka arabelleği serbest bırakmak ve ekrana sunuya izin vermek için yöntemini çağırın.
Güncelleştirmeler işleme iş parçacığına gönderildiğinde, işleme iş parçacığı değiştirilen dikdörtgenleri arka arabellekten ön arabelleğe kopyalar. İşleme sistemi, kilitlenmeleri önlemek ve "yırtma" gibi yapıtları yeniden çizmek için bu değişimi denetler.
Oluşturucular
| Name | Description |
|---|---|
| WriteableBitmap(BitmapSource) |
verilen BitmapSourceöğesini kullanarak sınıfının yeni bir örneğini WriteableBitmap başlatır. |
| WriteableBitmap(Int32, Int32, Double, Double, PixelFormat, BitmapPalette) |
Belirtilen parametrelerle sınıfının yeni bir örneğini WriteableBitmap başlatır. |
Özellikler
| Name | Description |
|---|---|
| BackBuffer |
Arka arabelleğe bir işaretçi alır. |
| BackBufferStride |
Tek bir piksel veri satırındaki bayt sayısını gösteren bir değer alır. |
| CanFreeze |
Nesnenin değiştirilemez hale getirilip getirilemeyeceğini gösteren bir değer alır. (Devralındığı yer: Freezable) |
| DependencyObjectType |
DependencyObjectType Bu örneğin CLR türünü sarmalayan öğesini alır. (Devralındığı yer: DependencyObject) |
| Dispatcher |
Dispatcher Bunun DispatcherObject ilişkili olduğu öğesini alır. (Devralındığı yer: DispatcherObject) |
| DpiX |
Görüntünün inç başına yatay noktaları (dpi) alır. (Devralındığı yer: BitmapSource) |
| DpiY |
Görüntünün inç başına dikey noktaları (dpi) alır. (Devralındığı yer: BitmapSource) |
| Format |
Bit eşlem verilerinin yerelini PixelFormat alır. (Devralındığı yer: BitmapSource) |
| HasAnimatedProperties |
Bir veya daha fazla AnimationClock nesnenin bu nesnenin bağımlılık özelliklerinden herhangi biriyle ilişkili olup olmadığını gösteren bir değer alır. (Devralındığı yer: Animatable) |
| Height |
Kaynak bit eşleminin yüksekliğini cihazdan bağımsız birimlerde (birim başına 1/96 inç) alır. (Devralındığı yer: BitmapSource) |
| IsDownloading |
İçeriğin şu anda indirilip indirilmediğini BitmapSource gösteren bir değer alır. (Devralındığı yer: BitmapSource) |
| IsFrozen |
Nesnenin şu anda değiştirilebilir olup olmadığını gösteren bir değer alır. (Devralındığı yer: Freezable) |
| IsSealed |
Bu örneğin şu anda korumalı (salt okunur) olup olmadığını gösteren bir değer alır. (Devralındığı yer: DependencyObject) |
| Metadata |
Bu bit eşlem görüntüsüyle ilişkili meta verileri alır. (Devralındığı yer: BitmapSource) |
| Palette |
Bit eşlem belirtilmişse, bit eşlem renk paletini alır. (Devralındığı yer: BitmapSource) |
| PixelHeight |
Bit eşlem yüksekliğini piksel cinsinden alır. (Devralındığı yer: BitmapSource) |
| PixelWidth |
Bit eşlem genişliğini piksel cinsinden alır. (Devralındığı yer: BitmapSource) |
| Width |
Bit eşlem genişliğini cihazdan bağımsız birimler halinde (birim başına 1/96 inç) alır. (Devralındığı yer: BitmapSource) |
Yöntemler
| Name | Description |
|---|---|
| AddDirtyRect(Int32Rect) |
Bit eşleminin değişen alanını belirtir. |
| ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) |
Belirtilen DependencyPropertyöğesine bir AnimationClock uygular. Özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır. (Devralındığı yer: Animatable) |
| ApplyAnimationClock(DependencyProperty, AnimationClock) |
Belirtilen DependencyPropertyöğesine bir AnimationClock uygular. Özelliği zaten animasyonlu ise, SnapshotAndReplace iletim davranışı kullanılır. (Devralındığı yer: Animatable) |
| BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) |
Belirtilen DependencyPropertyöğesine bir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, belirtilen HandoffBehavior kullanılır. (Devralındığı yer: Animatable) |
| BeginAnimation(DependencyProperty, AnimationTimeline) |
Belirtilen DependencyPropertyöğesine bir animasyon uygular. Animasyon, sonraki çerçeve işlendiğinde başlatılır. Belirtilen özellik zaten animasyonluysa, SnapshotAndReplace iletim davranışı kullanılır. (Devralındığı yer: Animatable) |
| CheckAccess() |
Çağıran iş parçacığının bu DispatcherObjectöğesine erişimi olup olmadığını belirler. (Devralındığı yer: DispatcherObject) |
| CheckIfSiteOfOrigin() |
Bit eşlem kaynak içeriğinin bilinen bir kaynak sitesinden olup olmadığını denetler. Bu yöntem, piksel kopyalama işlemlerinin güvenli olduğundan emin olmak için kullanılır. (Devralındığı yer: BitmapSource) |
| ClearValue(DependencyProperty) |
Bir özelliğin yerel değerini temizler. Temizlenecek özellik bir DependencyProperty tanımlayıcı tarafından belirtilir. (Devralındığı yer: DependencyObject) |
| ClearValue(DependencyPropertyKey) |
Salt okunur özelliğin yerel değerini temizler. Temizlenecek özellik tarafından DependencyPropertyKeybelirtilir. (Devralındığı yer: DependencyObject) |
| Clone() |
Bu WriteableBitmapnesnenin değerlerinin derin kopyalarını oluşturarak bu öğesinin değiştirilebilir bir kopyasını oluşturur. Bağımlılık özelliklerini kopyalarken, bu yöntem kaynak başvurularını ve veri bağlamalarını kopyalar (ancak bunlar artık çözümlenmeyebilir) ancak animasyonları veya geçerli değerlerini kopyalar. |
| CloneCore(Freezable) |
Bu örneği, belirtilen BitmapSourceöğesinin derin bir kopyası yapar. Bağımlılık özelliklerini kopyalarken, bu yöntem kaynak başvurularını ve veri bağlamalarını kopyalar (ancak bunlar artık çözümlenmeyebilir) ancak animasyonları veya geçerli değerlerini kopyalar. (Devralındığı yer: BitmapSource) |
| CloneCurrentValue() |
Bu nesnenin değiştirilebilir bir kopyasını oluşturarak bu ByteAnimationUsingKeyFrames nesnenin geçerli değerlerinin derin kopyalarını oluşturur. Kaynak başvuruları, veri bağlamaları ve animasyonlar kopyalanmaz, ancak geçerli değerleri kopyalanır. |
| CloneCurrentValueCore(Freezable) |
Bu örneği, geçerli özellik değerlerini kullanarak belirtilenlerin BitmapSource değiştirilebilir bir derin kopyası yapar. Kaynak başvuruları, veri bağlamaları ve animasyonlar kopyalanmaz, ancak geçerli değerleri kopyalanır. (Devralındığı yer: BitmapSource) |
| CoerceValue(DependencyProperty) |
Belirtilen bağımlılık özelliğinin değerini zorlama. Bu, çağrısında CoerceValueCallbackvar olan bağımlılık özelliği için özellik meta verilerinde belirtilen herhangi bir DependencyObject işlevi çağırarak gerçekleştirilir. (Devralındığı yer: DependencyObject) |
| CopyPixels(Array, Int32, Int32) |
Bit eşlem piksel verilerini belirtilen uzaklıkta başlayarak belirtilen adımla bir piksel dizisine kopyalar. (Devralındığı yer: BitmapSource) |
| CopyPixels(Int32Rect, Array, Int32, Int32) |
Belirtilen dikdörtgen içindeki bit eşlem piksel verilerini, belirtilen uzaklıkta başlayan belirtilen adıma sahip bir piksel dizisine kopyalar. (Devralındığı yer: BitmapSource) |
| CopyPixels(Int32Rect, IntPtr, Int32, Int32) |
Bit eşlem piksel verilerini belirtilen dikdörtgen içinde kopyalar. (Devralındığı yer: BitmapSource) |
| CreateInstance() |
Freezable sınıfının yeni bir örneğini başlatır. (Devralındığı yer: Freezable) |
| CreateInstanceCore() |
Türetilmiş bir sınıfta uygulandığında, türetilmiş sınıfın Freezable yeni bir örneğini oluşturur. (Devralındığı yer: Freezable) |
| Equals(Object) |
Sağlanan DependencyObject öğesinin geçerli DependencyObjectile eşdeğer olup olmadığını belirler. (Devralındığı yer: DependencyObject) |
| Freeze() |
Geçerli nesneyi değiştirilemez hale getirir ve özelliğini olarak |
| FreezeCore(Boolean) |
veya türetilmiş bir sınıfın BitmapSource örneğini sabit hale getirir. (Devralındığı yer: BitmapSource) |
| GetAnimationBaseValue(DependencyProperty) |
Belirtilen DependencyPropertyöğesinin animasyonsuz değerini döndürür. (Devralındığı yer: Animatable) |
| GetAsFrozen() |
temel (animasyonsuz) özellik değerlerini kullanarak donmuş bir kopyasını Freezableoluşturur. Kopya dondurulacağından, dondurulan alt nesneler başvuruyla kopyalanır. (Devralındığı yer: Freezable) |
| GetAsFrozenCore(Freezable) |
Bu örneği belirtilen BitmapSource nesnenin bir kopyası yapar. (Devralındığı yer: BitmapSource) |
| GetCurrentValueAsFrozen() |
Geçerli özellik değerlerini kullanarak donmuş Freezable bir kopyasını oluşturur. Kopya dondurulacağından, dondurulan alt nesneler başvuruyla kopyalanır. (Devralındığı yer: Freezable) |
| GetCurrentValueAsFrozenCore(Freezable) |
Bu örneği, belirtilen BitmapSourceöğesinin donmuş bir kopyası yapar. Kaynak başvuruları, veri bağlamaları ve animasyonlar kopyalanmaz, ancak geçerli değerleri kopyalanır. (Devralındığı yer: BitmapSource) |
| GetHashCode() |
Bu DependencyObjectiçin bir karma kodu alır. (Devralındığı yer: DependencyObject) |
| GetLocalValueEnumerator() |
Hangi bağımlılık özelliklerinin bu DependencyObjectüzerinde yerel olarak ayarlı değerlere sahip olduğunu belirlemek için özel bir numaralandırıcı oluşturur. (Devralındığı yer: DependencyObject) |
| GetType() |
Geçerli örneğin Type alır. (Devralındığı yer: Object) |
| GetValue(DependencyProperty) |
Bir öğesinin bu örneğindeki bir bağımlılık özelliğinin DependencyObjectgeçerli etkin değerini döndürür. (Devralındığı yer: DependencyObject) |
| InvalidateProperty(DependencyProperty) |
Belirtilen bağımlılık özelliği için geçerli değeri yeniden değerlendirir. (Devralındığı yer: DependencyObject) |
| Lock() |
Geri arabelleği güncelleştirmeler için ayırır. |
| MemberwiseClone() |
Geçerli Objectbasit bir kopyasını oluşturur. (Devralındığı yer: Object) |
| OnChanged() |
Geçerli Freezable nesne değiştirildiğinde çağrılır. (Devralındığı yer: Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Bu üye Windows Presentation Foundation (WPF) altyapısını destekler ve doğrudan kodunuzdan kullanılması amaçlanmamıştır. (Devralındığı yer: Freezable) |
| OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Yeni ayarlanmış bir DependencyObjectType veri üyesi için uygun bağlam işaretçilerinin oluşturulmasını sağlar. (Devralındığı yer: Freezable) |
| OnPropertyChanged(DependencyPropertyChangedEventArgs) |
türündeki DependencyObjectFreezabledeğişen bağımlılık özelliğine yanıt olarak herhangi Changed bir işleyici çağırmak için uygulamasını OnPropertyChanged(DependencyPropertyChangedEventArgs) geçersiz kılar. (Devralındığı yer: Freezable) |
| ReadLocalValue(DependencyProperty) |
Varsa, bağımlılık özelliğinin yerel değerini döndürür. (Devralındığı yer: DependencyObject) |
| ReadPreamble() |
Freezable geçerli bir iş parçacığından erişildiğinden emin olur. öğesinin Freezable devralanları, bağımlılık özellikleri olmayan veri üyelerini okuyan herhangi bir API'nin başında bu yöntemi çağırmalıdır. (Devralındığı yer: Freezable) |
| SetCurrentValue(DependencyProperty, Object) |
Bir bağımlılık özelliğinin değerini, değer kaynağını değiştirmeden ayarlar. (Devralındığı yer: DependencyObject) |
| SetValue(DependencyProperty, Object) |
Bağımlılık özelliği tanımlayıcısı tarafından belirtilen bir bağımlılık özelliğinin yerel değerini ayarlar. (Devralındığı yer: DependencyObject) |
| SetValue(DependencyPropertyKey, Object) |
Bağımlılık özelliğinin tanımlayıcısı tarafından belirtilen salt okunur bağımlılık özelliğinin DependencyPropertyKey yerel değerini ayarlar. (Devralındığı yer: DependencyObject) |
| ShouldSerializeProperty(DependencyProperty) |
Serileştirme işlemlerinin sağlanan bağımlılık özelliği için değeri serileştirmesi gerekip gerekmediğini gösteren bir değer döndürür. (Devralındığı yer: DependencyObject) |
| ToString() |
Geçerli kültüre göre bu nesnenin dize gösterimini oluşturur. (Devralındığı yer: ImageSource) |
| ToString(IFormatProvider) |
Geçirilen öğesini temel alarak bu nesnenin dize gösterimini IFormatProvider oluşturur. Sağlayıcı ise |
| TryLock(Duration) |
Bit eşlemi kilitlemeye çalışır ve belirtilen süreden daha uzun süre beklemez. |
| Unlock() |
Arka arabelleğinden çıkararak görüntüleme için kullanılabilir hale getirir. |
| VerifyAccess() |
Çağıran iş parçacığının bu DispatcherObjectöğesine erişmesini zorlar. (Devralındığı yer: DispatcherObject) |
| WritePixels(Int32Rect, Array, Int32, Int32, Int32) |
Bit eşlemin belirtilen bölgesindeki pikselleri güncelleştirir. |
| WritePixels(Int32Rect, Array, Int32, Int32) |
Bit eşlemin belirtilen bölgesindeki pikselleri güncelleştirir. |
| WritePixels(Int32Rect, IntPtr, Int32, Int32, Int32, Int32) |
Bit eşlemin belirtilen bölgesindeki pikselleri güncelleştirir. |
| WritePixels(Int32Rect, IntPtr, Int32, Int32) |
Bit eşlemin belirtilen bölgesindeki pikselleri güncelleştirir. |
| WritePostscript() |
Changed için Freezable olayını oluşturur ve yöntemini çağırırOnChanged(). öğesinden Freezable türetilen sınıflar, bağımlılık özellikleri olarak depolanmayan sınıf üyelerini değiştiren herhangi bir API'nin sonunda bu yöntemi çağırmalıdır. (Devralındığı yer: Freezable) |
| WritePreamble() |
öğesinin Freezable dondurulmadığını ve geçerli bir iş parçacığı bağlamından erişildiğini doğrular. Freezable devralanların, bağımlılık özellikleri olmayan veri üyelerine yazan herhangi bir API'nin başında bu yöntemi çağırması gerekir. (Devralındığı yer: Freezable) |
Ekinlikler
| Name | Description |
|---|---|
| Changed |
veya içerdiği bir nesne değiştirildiğinde Freezable gerçekleşir. (Devralındığı yer: Freezable) |
| DecodeFailed |
Bozuk bir görüntü üst bilgisi nedeniyle görüntü yüklenemediğinde gerçekleşir. (Devralındığı yer: BitmapSource) |
| DownloadCompleted |
Bit eşlem içeriği tamamen indirildiğinde gerçekleşir. (Devralındığı yer: BitmapSource) |
| DownloadFailed |
Bit eşlem içeriği indirilemediğinde gerçekleşir. (Devralındığı yer: BitmapSource) |
| DownloadProgress |
Bit eşlem içeriğinin indirme ilerleme durumu değiştiğinde gerçekleşir. (Devralındığı yer: BitmapSource) |
Belirtik Arabirim Kullanımları
| Name | Description |
|---|---|
| IFormattable.ToString(String, IFormatProvider) |
Belirtilen biçimi kullanarak geçerli örneğin değerini biçimlendirin. (Devralındığı yer: ImageSource) |