windows bitmap image Ρ‡Ρ‚ΠΎ это

ΠœΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΡƒΠ΅ΠΌ System.Drawing.Bitmap

// Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ
sourceBitmap = (Bitmap) Image.FromFile( «Zap.png» );

// Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°
targetBitmap = new Bitmap(sourceBitmap.Width, sourceBitmap.Height, sourceBitmap.PixelFormat);

for ( int y = 0; y for ( int x = 0; x byte rgb = ( byte )(0.3 * c.R + 0.59 * c.G + 0.11 * c.B);

targetBitmap.SetPixel(x, y, Color.FromArgb(c.A, rgb, rgb, rgb));

Π­Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ понятноС ΠΈ простоС, Π½ΠΎ ΠΊ соТалСнию ΠΆΡƒΡ‚ΡŒ ΠΊΠ°ΠΊ нСэффСктивноС. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Β«Ρ€Π΅Π·Π²Ρ‹ΠΉΒ» ΠΊΠΎΠ΄, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ всС это Π΄Π΅Π»ΠΎ Π½Π° Π‘++. Для Π½Π°Ρ‡Π°Π»Π° создадим структурку для хранСния Ρ†Π²Π΅Ρ‚ΠΎΠ²Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ пиксСля

// структура ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ΄ΠΈΠ½ пиксСль Π² 32bpp RGBA
struct Pixel <

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ которая Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Π»Π°Ρ‚ΡŒ пиксСль Ρ‡Π΅Ρ€Π½ΠΎ-Π±Π΅Π»Ρ‹ΠΌ:

const BYTE scale = static_cast BYTE >(0.3 * pixel.Red + 0.59 * pixel.Green + 0.11 * pixel.Blue);

p.Red = p.Green = p.Blue = scale;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ собствСнно пишСм саму Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΎΠ±Ρ…ΠΎΠ΄Π°:

CPPSIMDLIBRARY_API void AlterBitmap( BYTE * src, BYTE * dst, int width, int height, int stride)

for ( int y = 0; y for ( int x = 0; x int offset = x * sizeof (Pixel) + y * stride;

Pixel& s = * reinterpret_cast

Pixel& d = * reinterpret_cast

// измСняСм d
d = MakeGrayscale(s);

А дальшС остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π΅ ΠΈΠ· C#.

// «Π·Π°ΠΆΠΈΠΌΠ°Π΅ΠΌ» Π±Π°ΠΉΡ‚Ρ‹ ΠΎΠ±Π΅ΠΈΡ… ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ
Rectangle rect = new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height);

BitmapData srcData = sourceBitmap.LockBits(rect, ImageLockMode.ReadWrite, sourceBitmap.PixelFormat);

BitmapData dstData = targetBitmap.LockBits(rect, ImageLockMode.ReadWrite, sourceBitmap.PixelFormat);

// отсылаСм Π² unmanaged ΠΊΠΎΠ΄ для ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ
AlterBitmap(srcData.Scan0, dstData.Scan0, srcData.Width, srcData.Height, srcData.Stride);

// отпускаСм ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΈ
sourceBitmap.UnlockBits(srcData);

Π­Ρ‚ΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΠ»ΠΎ быстродСйствиС, Π½ΠΎ ΠΌΠ½Π΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π΅Ρ‰Π΅ большСго. Π― Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ OpenMP ΠΏΠ΅Ρ€Π΅Π΄ Ρ†ΠΈΠΊΠ»ΠΎΠΌ ΠΏΠΎ y ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» прСдсказуСмоС ускорСниС Π² 2 Ρ€Π°Π·Π°. Π”Π°Π»ΡŒΡˆΠ΅ Π·Π°Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΠΏΠΎΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ SIMD. Для этого я написал Π²ΠΎΡ‚ этот, Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΊΠΎΠ΄:

CPPSIMDLIBRARY_API void AlterBitmap( BYTE * src, BYTE * dst, int width, int height, int stride)

// Ρ„Π°ΠΊΡ‚ΠΎΡ€Ρ‹ для конвСрсии Π² Ρ‡/Π±
static __m128 factor = _mm_set_ps(1.0f, 0.3f, 0.59f, 0.11f);

#pragma omp parallel for

for ( int y = 0; y const int offset = y * stride;

__m128i * s = ( __m128i *)(src + offset);

__m128i * d = ( __m128i *)(dst + offset);

for ( int x = 0; x > 2); ++x) <

// Ρƒ нас 4 пиксСля Π·Π° Ρ€Π°Π·
for ( int p = 0; p // ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ пиксСль
__m128 pixel;

// считаСм сумму
const BYTE sum = ( BYTE )(pixel.m128_f32[0] + pixel.m128_f32[1] + pixel.m128_f32[2]);

// пишСм Π½Π°Π·Π°Π΄ Π² Π±ΠΈΡ‚ΠΌΠ°ΠΏ
d->m128i_u8[p m128i_u8[(p m128i_u8[(p m128i_u8[(p BYTE )pixel.m128_f32[3];

НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ этот ΠΊΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ‚ 4 ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ умноТСния Π·Π° Ρ€Π°Π· (инструкция _mm_mul_ps ), всС эти конвСрсии Π½Π΅ Π΄Π°Π»ΠΈ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌΠΈ опСрациями – скорСС Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π°Ρ‡Π°Π» Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅. Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ 360Γ—480. Использовался 2Ρ…-ядСрный MacBook с 4Π“Π± RAM, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ усрСднСнныС.

windows bitmap image Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ windows bitmap image Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это

А Π²ΠΎΡ‚ ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

windows bitmap image Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ windows bitmap image Ρ‡Ρ‚ΠΎ это. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это. Π€ΠΎΡ‚ΠΎ windows bitmap image Ρ‡Ρ‚ΠΎ это

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Windows Bitmap

BMP (ΠΎΡ‚ Π°Π½Π³Π». растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ. Π˜Π·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ΠΌΠΎΠ³ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-зависимыС растры (Π°Π½Π³Π». Device Dependent Bitmap, DDB ), Π½ΠΎ с Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ отобраТСния графичСских Π΄Π°Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ BMP стал прСимущСствСнно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎ-нСзависимыС растры (Π°Π½Π³Π». Device Independent Bitmap, DIB ).

Π‘ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ BMP Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΎΠ΅ количСство ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€ΠΎΠ²Π°Π½Π° Π² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы Windows ΠΈ OS/2. Π€Π°ΠΉΠ»Ρ‹ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° BMP ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ .bmp, .dib ΠΈ .rle. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π΄Π°Π½Π½Ρ‹Π΅ этого Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ Π² Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ рСсурсов RES ΠΈ Π² PE-Ρ„Π°ΠΉΠ»Ρ‹.

Π“Π»ΡƒΠ±ΠΈΠ½Π° Ρ†Π²Π΅Ρ‚Π° Π² Π΄Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ 1 Π΄ΠΎ 48 Π±ΠΈΡ‚ Π½Π° пиксСль, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ изобраТСния 65535Γ—65535 пиксСлСй.

Π’ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ BMP Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сТатия ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ RLE, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ с Π±ΠΎΠ»Π΅Π΅ ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ сТатиСм, ΠΈ ΠΈΠ·-Π·Π° большого ΠΎΠ±ΡŠΡ‘ΠΌΠ° BMP Ρ€Π΅Π΄ΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅, Π³Π΄Π΅ для сТатия Π±Π΅Π· ΠΏΠΎΡ‚Π΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ PNG ΠΈ Π±ΠΎΠ»Π΅Π΅ старый portable anymap. Для сохранСния ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Ρ… вСрсий растровых ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ собствСнный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, XCF Ρƒ Adobe Photoshop.

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

ΠžΠ±Π·ΠΎΡ€ структуры Ρ„Π°ΠΉΠ»Π°

BMP-Ρ„Π°ΠΉΠ» состоит ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ… частСй:

Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π”Π»ΠΈΠ½Π° поля ОписаниС поля (Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ находится)

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Ρ„Π°ΠΉΠ»Π° Π‘ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π”Π»ΠΈΠ½Π° поля ОписаниС поля (Ρ‡Ρ‚ΠΎ Ρ‚ΡƒΡ‚ находится

14 4 Π Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° BITMAP (Π² Π±Π°ΠΉΡ‚Π°Ρ…) Ρ€Π°Π²Π½ΠΎ 40 18 4 Π¨ΠΈΡ€ΠΈΠ½Π° изобраТСния Π² пиксСлях 22 4 Высота изобраТСния Π² пиксСлях 26 2 Число плоскостСй, Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ 1 28 2 Π‘ΠΈΡ‚/пиксСл: 1, 4, 8 ΠΈΠ»ΠΈ 24 30 4 Π’ΠΈΠΏ сТатия 34 4 0 ΠΈΠ»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ сТатого изобраТСния Π² Π±Π°ΠΉΡ‚Π°Ρ…. 38 4 Π“ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, пиксСл/ΠΌ 42 4 Π’Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, пиксСл/ΠΌ 46 4 ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Ρ†Π²Π΅Ρ‚ΠΎΠ² 50 4 ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ «Π²Π°ΠΆΠ½Ρ‹Ρ…» Ρ†Π²Π΅Ρ‚ΠΎΠ². ΠŸΠ°Π»ΠΈΡ‚Ρ€Π° (ΠšΠ°Ρ€Ρ‚Π° Ρ†Π²Π΅Ρ‚ΠΎΠ² для N Ρ†Π²Π΅Ρ‚ΠΎΠ²), Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ 54 4*N ΠŸΠ°Π»ΠΈΡ‚Ρ€Π°

BITMAPFILEHEADER

Π­Ρ‚Π° структура содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ‚ΠΈΠΏΠ΅, Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ ΠΈ прСдставлСнии Π΄Π°Π½Π½Ρ‹Ρ… Π² Ρ„Π°ΠΉΠ»Π΅.

Π’ΠΈΠΏ Β«WORDΒ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ 16 Π±ΠΈΡ‚, Ρ‚ΠΈΠΏΡ‹ Β«DWORDΒ» ΠΈ Β«LONGΒ» β€” 32 Π±ΠΈΡ‚Π°, порядок Π±Π°ΠΉΡ‚ΠΎΠ² подразумСваСтся little endian.

ПослС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Ρ„Π°ΠΉΠ»Π°

BITMAPINFOHEADER [2]

Если содСрТит Π½Π΅Π½ΡƒΠ»Π΅Π²ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈ biBitCount мСньшС 16, biClrUsed ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ количСство Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ устройства ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Если biBitCount большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π΅Π½ 16, biClrUsed ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ систСмных ΠΏΠ°Π»ΠΈΡ‚Ρ€. Если biBitCount Ρ€Π°Π²Π΅Π½ 16 ΠΈΠ»ΠΈ 32, ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° слСдуСт сразу послС Ρ‚Ρ€Ρ‘Ρ… Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… маск. Π’ ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ массив пиксСлСй слСдуСт сразу послС структуры BITMAPINFO, biClrUsed Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ноль, Π»ΠΈΠ±ΠΎ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ: Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° BITMAPINFO ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ BITMAPINFOHEADER ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ, прСдоставляя ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ Ρ†Π²Π΅Ρ‚ΠΎΠ² изобраТСния.

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ Π² структурС BITMAPINFO, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Ρ…Ρ€Π°Π½ΠΈΠΌΡƒΡŽ Π² biSize, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

BITMAPV4HEADER [3]

Поля ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° структуры ΠΈ Π΄ΠΎ bV4ClrImportant Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΈΠΌΠ΅ΡŽΡ‚ Ρ‚ΠΎ ΠΆΠ΅ Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ поля структуры BITMAPINFOHEADER.

BITMAPV5HEADER [4]

Для ΠΏΠΎΠ»Π΅ΠΉ ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° структуры ΠΈ Π΄ΠΎ bV5GammaBlue Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ описаны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ отличия ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… вСрсий β€” BITMAPINFOHEADER ΠΈ BITMAPV4HEADER.

ΠŸΠ°Π»ΠΈΡ‚Ρ€Π°

ΠŸΠ°Π»ΠΈΡ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘Ρ…Π±Π°ΠΉΡ‚ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠΎ числу доступных Ρ†Π²Π΅Ρ‚ΠΎΠ² (256 для 8-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ изобраТСния). Π’Ρ€ΠΈ младшиС Π±Π°ΠΉΡ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ поля ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΈΠ½Ρ‚Π΅Π½ΡΠΈΠ²Π½ΠΎΡΡ‚ΡŒ красной, Π·Π΅Π»Ρ‘Π½ΠΎΠΉ ΠΈ синСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Ρ†Π²Π΅Ρ‚Π°, ΡΡ‚Π°Ρ€ΡˆΠΈΠΉ Π±Π°ΠΉΡ‚ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСль изобраТСния описан Π² Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΎΠ΄Π½ΠΈΠΌ Π±Π°ΠΉΡ‚ΠΎΠΌ, содСрТащим Π½ΠΎΠΌΠ΅Ρ€ поля ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ сохранСн Ρ†Π²Π΅Ρ‚ этого пиксСля.

Если пиксСль изобраТСния описываСтся 16-Π±ΠΈΡ‚Π½Ρ‹ΠΌ числом, ΠΏΠ°Π»ΠΈΡ‚Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π΄Π²ΡƒΡ…Π±Π°ΠΉΡ‚Π½Ρ‹Ρ… значСния, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… прСдСляСт маску для извлСчСния ΠΈΠ· 16-Π±ΠΈΡ‚Π½ΠΎΠ³ΠΎ пиксСля красной, Π·Π΅Π»Ρ‘Π½ΠΎΠΉ ΠΈ синСй ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ Ρ†Π²Π΅Ρ‚Π°.

Π€Π°ΠΉΠ» BMP ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹, Ссли Π² Π½Ρ‘ΠΌ хранится нСсТатоС ΠΏΠΎΠ»Π½ΠΎΡ†Π²Π΅Ρ‚Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

Π”Π°Π½Π½Ρ‹Π΅ изобраТСния

ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ пиксСлСй, записанных Π² Ρ‚ΠΎΠΌ ΠΈΠ»ΠΈ ΠΈΠ½ΠΎΠΌ Π²ΠΈΠ΄Π΅. ПиксСли хранятся построчно, снизу Π²Π²Π΅Ρ€Ρ…. КаТдая строка изобраТСния дополняСтся нулями Π΄ΠΎ Π΄Π»ΠΈΠ½Ρ‹, ΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ Ρ‡Π΅Ρ‚Ρ‹Ρ€Ρ‘ΠΌ Π±Π°ΠΉΡ‚Π°ΠΌ.

Π’ bmp Ρ„Π°ΠΉΠ»Π°Ρ… с Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ Ρ†Π²Π΅Ρ‚Π° 24 Π±ΠΈΡ‚Π°, Π±Π°ΠΉΡ‚Ρ‹ Ρ†Π²Π΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСла хранятся Π² порядкС BGR (Blue,Green,Red)

B bmp Ρ„Π°ΠΉΠ»Π°Ρ… с Π³Π»ΡƒΠ±ΠΈΠ½ΠΎΠΉ Ρ†Π²Π΅Ρ‚Π° 32 Π±ΠΈΡ‚Π°, Π±Π°ΠΉΡ‚Ρ‹ Ρ†Π²Π΅Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ пиксСла хранятся Π² порядкС BGRA (Blue,Green,Red,Alpha)

Π‘ΠΈΡ‚Π½ΠΎΡΡ‚ΡŒ изобраТСния

Π’ зависимости ΠΎΡ‚ количСства прСдставляСмых Ρ†Π²Π΅Ρ‚ΠΎΠ², Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ отводится ΠΎΡ‚ 1 Π΄ΠΎ 48 Π±ΠΈΡ‚ΠΎΠ²:

Π˜Π½Π΄Π΅ΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Ρ†Π²Π΅Ρ‚Π°

ΠŸΡ€ΠΈ количСствС Π±ΠΈΡ‚ ΠΎΡ‚ 1 Π΄ΠΎ 8 Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ пиксСл ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅ΠΆΠΈΠΌ индСксированных Ρ†Π²Π΅Ρ‚ΠΎΠ². Π’ этом случаС число, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ пиксСлу ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ Π½Π° Ρ†Π²Π΅Ρ‚, Π° Π½Π° Π½ΠΎΠΌΠ΅Ρ€ Ρ†Π²Π΅Ρ‚Π° Π² ΠΏΠ°Π»ΠΈΡ‚Ρ€Π΅. Благодаря использованию ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρ‹ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΊ Ρ†Π²Π΅Ρ‚Π°ΠΌ, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π½Π° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½ΠΎ Π½Π΅ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Ρ†Π²Π΅Ρ‚Π°ΠΌΠΈ, Π° ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ количСством ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… цвСтов…

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Bitmap Image Класс

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

НСкоторыС свСдСния относятся ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎ выпуска ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ внСсСны сущСствСнныС измСнСния. ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Π½Π΅ прСдоставляСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, явных ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΡ‹Ρ…, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… здСсь свСдСний.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ BitmapSource, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка XAML.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… ΠΊΠΎΠ΄Π° ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ BitmapImage Π² XAML (XAML) ΠΈ ΠΊΠΎΠ΄Π΅.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

BitmapImage ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ BitmapImage конструктора, автоматичСски ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π° измСнСния свойств ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса BitmapImage.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр BitmapImage, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ прСдоставлСнный Uri.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр BitmapImage с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ, источником ΠΊΠΎΠ΅Π³ΠΎ являСтся Uri, ΠΈ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π² соотвСтствии с прСдоставлСнным RequestCachePolicy.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй CacheOption.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй CreateOptions.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй DecodePixelHeight.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй DecodePixelWidth.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй Rotation.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй SourceRect.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй StreamSource.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй UriCachePolicy.

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ свойство зависимостСй UriSource.

Бвойства

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Uri Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ контСкста BitmapImage.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ BitmapCacheOption для использования Π΄Π°Π½Π½Ρ‹ΠΌ экзСмпляром BitmapImage.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ нСизмСняСмым.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ высоту Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния Π² пиксСлях.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния Π² пиксСлях.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Dispatcher, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ связан этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ DispatcherObject.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° дюйм изобраТСния (DPI).

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ Π½Π° дюйм изобраТСния (DPI).

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ исходный Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ PixelFormat Π΄Π°Π½Π½Ρ‹Ρ… растрового изобраТСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, сопоставлСны Π»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² AnimationClock Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΈΠ· свойств зависимостСй этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ высоту исходного растрового изобраТСния Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…, Π½Π΅ зависящих ΠΎΡ‚ устройства (1/1/96 дюйма Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ).

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π»ΠΈ BitmapImage Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ содСрТимого.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, доступСн Π»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ для измСнСния Π² настоящСС врСмя.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π΅, являСтся Π»ΠΈ этот экзСмпляр Π² Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Π½Ρ‹ΠΌ (доступным Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния).

НС поддСрТиваСтся. BitmapImage Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ свойство Metadata ΠΈ создаСт ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ NotSupportedException.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ΠΎΠ²ΡƒΡŽ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ растрового изобраТСния, Ссли ΠΎΠ½Π° Π·Π°Π΄Π°Π½Π°.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ высоту растрового изобраТСния Π² пиксСлях.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ растрового изобраТСния Π² пиксСлях.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ ΡƒΠ³ΠΎΠ» для ΠΏΠΎΠ²ΠΎΡ€ΠΎΡ‚Π° BitmapImage.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² качСствС источника для BitmapImage.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ исходный ΠΏΠΎΡ‚ΠΎΠΊ BitmapImage.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅Π΅ Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΡƒ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ· источника HTTP.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ источник Uri для BitmapImage.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ рисунка Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ…, нСзависимых ΠΎΡ‚ устройства (1/1/96 дюйма Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ).

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ AnimationClock ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ DependencyProperty. Если свойство ΡƒΠΆΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ эстафСтноС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ SnapshotAndReplace.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ AnimationClock ΠΊ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡƒ DependencyProperty. Если свойство ΡƒΠΆΠ΅ являСтся Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ HandoffBehavior.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ DependencyProperty. Анимация начинаСтся ΠΏΡ€ΠΈ отрисовкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ°Π΄Ρ€Π°. Если ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ свойство ΡƒΠΆΠ΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ пСрСмСщСния SnapshotAndReplace.

ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΡŽ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌΡƒ DependencyProperty. Анимация начинаСтся ΠΏΡ€ΠΈ отрисовкС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ°Π΄Ρ€Π°. Если ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ свойство ΡƒΠΆΠ΅ являСтся Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ HandoffBehavior.

Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎ Π½Π°Ρ‡Π°Π»Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapImage.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, ΠΈΠΌΠ΅Π΅Ρ‚ Π»ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‚ΠΎΠΊ доступ ΠΊ этому DispatcherObject.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π»ΠΈ исходноС содСрТимоС Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ рисунка ΠΈΠ· извСстного ΡƒΠ·Π»Π° источника. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ копирования пиксСлСй.

ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства. ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌΠΎΠ΅ свойство задаСтся ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ DependencyProperty.

ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ доступного Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния свойства. ΠžΡ‡ΠΈΡ‰Π°Π΅ΠΌΠΎΠ΅ свойство задаСтся ΠΊΠ»ΡŽΡ‡ΠΎΠΌ DependencyPropertyKey.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ измСняСмый ΠΊΠ»ΠΎΠ½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapImage, дСлая Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π”Π΅Π»Π°Π΅Ρ‚ этот экзСмпляр Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapSource. ΠŸΡ€ΠΈ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ свойств зависимостСй этот ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ссылки Π½Π° рСсурсы ΠΈ привязки Π΄Π°Π½Π½Ρ‹Ρ… (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΆΠ΅ Π½Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΡ‹ΠΌΠΈ), Π½ΠΎ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ ΠΈ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΊΠ»ΠΎΠ½ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapImage, дСлая Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠ΅ ΠΊΠΎΠΏΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Бсылки Π½Π° рСсурсы, привязки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния.

Π”Π΅Π»Π°Π΅Ρ‚ этот экзСмпляр измСняСмой Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ BitmapSource с использованиСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств. Бсылки Π½Π° рСсурсы, привязки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния.

ΠŸΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ свойства зависимостСй. Π­Ρ‚ΠΎ осущСствляСтся ΠΏΡƒΡ‚Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π° ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ CoerceValueCallback, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ… свойства зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ сущСствуСт Π² Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ DependencyObject.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ пиксСлСй растрового изобраТСния Π² массив пиксСлСй с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ шагом начиная с Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ смСщСния.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ пиксСлСй растрового изобраТСния ΠΈΠ· Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ° Π² массив пиксСлСй с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ шагом начиная с Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ смСщСния.

ΠšΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Π΅ пиксСлСй растрового изобраТСния Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½ΠΈΠΊΠ°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Freezable.

Если рСализуСтся Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠΌ классС, создаСт Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΎΠ³ΠΎ класса Freezable.

Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapImage.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, являСтся Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ DependencyObject эквивалСнтом Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ DependencyObject.

Π”Π΅Π»Π°Π΅Ρ‚ экзСмпляр BitmapSource ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ класс постоянным.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½Π΅ Π°Π½ΠΈΠΌΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DependencyProperty.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ (Π½Π΅ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅) значСния свойств. Π’Π°ΠΊ ΠΊΠ°ΠΊ копия являСтся фиксированной, ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылки Π½Π° фиксированныС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π”Π΅Π»Π°Π΅Ρ‚ этот экзСмпляр ΠΊΠ»ΠΎΠ½ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapSource.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable с использованиСм Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ свойств. Π’Π°ΠΊ ΠΊΠ°ΠΊ копия являСтся фиксированной, ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ссылки Π½Π° фиксированныС Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π”Π΅Π»Π°Π΅Ρ‚ этот экзСмпляр зафиксированным ΠΊΠ»ΠΎΠ½ΠΎΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° BitmapSource. Бсылки Π½Π° рСсурсы, привязки Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π°Π½ΠΈΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ, Π½ΠΎ ΠΊΠΎΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈΡ… Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ значСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ…ΡΡˆ-ΠΊΠΎΠ΄ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DependencyObject.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ спСциализированный ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒ для опрСдСлСния свойств зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ локально установили значСния для Π΄Π°Π½Π½ΠΎΠ³ΠΎ DependencyObject.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Type для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ экзСмпляра.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства зависимостСй Π² этом экзСмплярС DependencyObject.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ вычисляСт Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ для ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ свойства зависимостСй.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½ΡƒΡŽ копию Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Object.

ВызываСтся ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable.

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ созданиС ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ контСкста для элСмСнта Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΈΠΏΠ° DependencyObjectType, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ Π·Π°Π΄Π°Π½.

этот элСмСнт ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ инфраструктуру Windows Presentation Foundation (WPF) ΠΈ Π½Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для нСпосрСдствСнного использования ΠΈΠ· ΠΊΠΎΠ΄Π°.

ΠŸΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ DependencyObject для OnPropertyChanged(DependencyPropertyChangedEventArgs), Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ любой ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Changed Π² ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ свойства зависимостСй Ρ‚ΠΈΠΏΠ° Freezable.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства зависимостСй, Ссли Ρ‚Π°ΠΊΠΎΠ²ΠΎΠ΅ сущСствуСт.

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ доступ ΠΊ Freezable ΠΈΠ· допустимого ΠΏΠΎΡ‚ΠΎΠΊΠ°. НаслСдники ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π½Π°Ρ‡Π°Π»Π΅ любого API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ считываСт элСмСнты Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠ΅ΡΡ свойствами зависимостСй.

Π—Π°Π΄Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства зависимостСй, Π½Π΅ мСняя источник значСния.

Π—Π°Π΄Π°Π΅Ρ‚ локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства зависимостСй, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ этого свойства.

Π—Π°Π΄Π°Π΅Ρ‚ локальноС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства зависимости Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния, опрСдСляСмоС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ DependencyPropertyKey свойства зависимостСй.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, слСдуСт Π»ΠΈ процСссам сСриализации Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΡΠ΅Ρ€ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ значСния для прСдоставлСнного свойства зависимостСй.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ строковоС прСдставлСниС Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π° Π±Π°Π·Π΅ языка ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ².

ΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρƒ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° доступ ΠΊ этому DispatcherObject.

Π’Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Changed для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ OnChanged(). ΠšΠ»Π°ΡΡΡ‹, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Π΅ ΠΎΡ‚ Freezable, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² ΠΊΠΎΠ½Ρ†Π΅ любого API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ измСняСт Ρ‡Π»Π΅Π½Ρ‹ класса, Π½Π΅ сохранСнныС Π² Π²ΠΈΠ΄Π΅ свойств зависимостСй.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Freezable Π½Π΅ Π·Π°ΠΌΠΎΡ€ΠΎΠΆΠ΅Π½ ΠΈ доступ ΠΊ Π½Π΅ΠΌΡƒ осущСствляСтся ΠΈΠ· допустимого контСкста ΠΏΠΎΡ‚ΠΎΠΊΠ°. НаслСдники ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Freezable Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Π½Π°Ρ‡Π°Π»Π΅ любого API, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ выполняСт запись Π² элСмСнтах Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ свойствами зависимостСй.

Бобытия

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚, ΠΊΠΎΠ³Π΄Π° измСняСтся класс Freezable ΠΈΠ»ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ…ΠΎΠ΄ΠΈΡ‚ Π² Π΅Π³ΠΎ состав.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ изобраТСния вслСдствиС поврСТдСния Π΅Π³ΠΎ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΌ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ рисунка.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ нСвозмоТности Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ рисунка.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния Ρ…ΠΎΠ΄Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ содСрТимого Ρ‚ΠΎΡ‡Π΅Ρ‡Π½ΠΎΠ³ΠΎ рисунка.

Π―Π²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса

Π€ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ экзСмпляра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Bitmap Класс

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅

НСкоторыС свСдСния относятся ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ вСрсии ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π΄ΠΎ выпуска ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ внСсСны сущСствСнныС измСнСния. ΠœΠ°ΠΉΠΊΡ€ΠΎΡΠΎΡ„Ρ‚ Π½Π΅ прСдоставляСт Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΉ, явных ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°Π΅ΠΌΡ‹Ρ…, ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… здСсь свСдСний.

Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ рисунок GDI+, состоящий ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… пиксСлСй графичСского изобраТСния ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² рисунка. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с изобраТСниями, опрСдСляСмыми Π΄Π°Π½Π½Ρ‹ΠΌΠΈ пиксСлСй.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹

Π­Ρ‚ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования с Windows Forms, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит, ΠΈ, Label PictureBox Button Label1 PictureBox1 ΠΈ Button1 соотвСтствСнно. Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΊΠΎΠ΄ Π² Ρ„ΠΎΡ€ΠΌΡƒ ΠΈ свяТитС Button1_Click ΠΌΠ΅Ρ‚ΠΎΠ΄ с Click событиСм ΠΊΠ½ΠΎΠΏΠΊΠΈ.

ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Π’ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΉ рисунок состоит ΠΈΠ· Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… для графичСского изобраТСния ΠΈ Π΅Π³ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ². БущСствуСт мноТСство стандартных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² для сохранСния растрового изобраТСния Π² Ρ„Π°ΠΉΠ». GDI+ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ Ρ„Π°ΠΉΠ»ΠΎΠ²: BMP, GIF, EXIF, JPG, PNG ΠΈ TIFF. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния ΠΎ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°Ρ… см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π’ΠΈΠΏΡ‹ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Ρ… рисунков.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ изобраТСния ΠΈΠ· Ρ„Π°ΠΉΠ»ΠΎΠ², ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… источников с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Bitmap конструкторов ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΈΡ… Π² ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠ»ΠΈ Π² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Save ΠΌΠ΅Ρ‚ΠΎΠ΄Π°. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Ρ€ΠΈΡΡƒΡŽΡ‚ΡΡ Π½Π° экранС ΠΈΠ»ΠΈ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ DrawImage ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Graphics ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Бписок Ρ€Π°Π·Π΄Π΅Π»ΠΎΠ², посвящСнных Ρ€Π°Π±ΠΎΡ‚Π΅ с Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Π Π°Π±ΠΎΡ‚Π° с изобраТСниями, Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹ΠΌΠΈ рисунками, Π·Π½Π°Ρ‡ΠΊΠ°ΠΌΠΈ ΠΈ ΠΌΠ΅Ρ‚Π°Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ.

BitmapКласс нСдоступСн для Ρ€Π°Π·Π½Ρ‹Ρ… Π΄ΠΎΠΌΠ΅Π½ΠΎΠ² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. НапримСр, Ссли ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ AppDomain ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ нСсколько кистСй, ΠΏΠ΅Ρ€ΡŒΠ΅Π² ΠΈ Ρ‚ΠΎΡ‡Π΅Ρ‡Π½Ρ‹Ρ… рисунков Π² этом Π΄ΠΎΠΌΠ΅Π½Π΅, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ эти ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² основной Π΄ΠΎΠΌΠ΅Π½ прилоТСния, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΡŒΡ ΠΈ кисти. Однако ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ DrawImage ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для рисования ΡƒΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Bitmap ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Π£Π΄Π°Π»Π΅Π½Π½ΠΎΠ΅ взаимодСйствиС Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎΠ»Π΅ «Native Image» Π² Ρ‚ΠΈΠΏΠ΅ «System. Drawing. Image».

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ изобраТСния.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ изобраТСния, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ изобраТСния, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ с Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Graphics.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ пиксСлСй.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌΠΈ значСниями Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ….

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°.

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ экзСмпляр класса Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ рСсурса.

Бвойства

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„Π»Π°Π³ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² для ΠΏΠΈΠΊΡΠ΅Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ массив ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠ² GUID, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°Π΄Ρ€ΠΎΠ² Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ высоту ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image Π² пиксСлях.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image Π² пиксСлях Π½Π° дюйм.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ ΠΏΠ°Π»ΠΈΡ‚Ρ€Ρƒ Ρ†Π²Π΅Ρ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту Π΄Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ пиксСлСй для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ элСмСнтов свойств, хранящихся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ всС элСмСнты свойств (части ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…), хранящихся Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Ρ„Π°ΠΉΠ»Π° этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту изобраТСния Π² пиксСлях.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ»ΠΈ Π·Π°Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ± ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image Π² пиксСлях Π½Π° дюйм.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image Π² пиксСлях.

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ копию Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ копию Ρ€Π°Π·Π΄Π΅Π»Π° этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Bitmap, опрСдСляСмого структурой Rectangle ΠΈ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ пСрСчислСниСм PixelFormat.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ копию части этого изобраТСния Bitmap, опрСдСляСмого Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ пСрСчислСниСм PixelFormat.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит всю Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ для создания прокси-сСрвСра, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для взаимодСйствия с ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ.

ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ всС рСсурсы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Image.

ΠžΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ‚ нСуправляСмыС рСсурсы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ Image, Π° ΠΏΡ€ΠΈ нСобходимости освобоТдаСт Ρ‚Π°ΠΊΠΆΠ΅ управляСмыС рСсурсы.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚, Ρ€Π°Π²Π΅Π½ Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Bitmap для Π·Π½Π°Ρ‡ΠΊΠ° ΠΈΠ· дСскриптора Windows.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Bitmap ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ рСсурса Windows.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ изобраТСния Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ†Π°Ρ… измСрСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ…, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ изобраТСния.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство ΠΊΠ°Π΄Ρ€ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°.

Π‘Π»ΡƒΠΆΠΈΡ‚ Ρ…ΡΡˆ-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ дСскриптор для Π·Π½Π°Ρ‡ΠΊΠ°.

Π˜Π·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ обслуТивания Π²ΠΎ врСмя сущСствования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ управляСт ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сущСствования Π΄Π°Π½Π½ΠΎΠ³ΠΎ экзСмпляра.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ пиксСля Π² этом ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΈ Bitmap.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ элСмСнт свойства ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ эскиз для этого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Image.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Type для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ экзСмпляра.

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ слуТбы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сущСствования для управлСния ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΎΠΉ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сущСствования для этого экзСмпляра.

Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap Π² систСмной памяти.

Π‘Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Bitmap Π² систСмной памяти.

Π”Π΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для этого элСмСнта Bitmap.

Π”Π΅Π»Π°Π΅Ρ‚ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Ρ†Π²Π΅Ρ‚ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΌ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ изобраТСния Bitmap.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½ΡƒΡŽ копию Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Object.

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π½Π΅ΠΏΠΎΠ»Π½ΡƒΡŽ копию Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° MarshalByRefObject.

УдаляСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ элСмСнт свойства ΠΈΠ· этого Image.

ΠŸΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚, Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚, Π»ΠΈΠ±ΠΎ ΠΏΠΎΠ²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Image.

БохраняСт Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° изобраТСния.

БохраняСт Π΄Π°Π½Π½ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

БохраняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Image Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ.

БохраняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Image Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠΎΠΌ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° изобраТСния.

БохраняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Image Π² ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

ДобавляСт ΠΊΠ°Π΄Ρ€ Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Save. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для сохранСния Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΊΠ°Π΄Ρ€ΠΎΠ² ΠΈΠ· ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π΄Ρ€ΠΎΠ²ΠΎΠ³ΠΎ изобраТСния Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠ°Π΄Ρ€ΠΎΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅.

ДобавляСт ΠΊΠ°Π΄Ρ€ Π² Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ ΠΏΠΎΡ‚ΠΎΠΊ, ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Save.

ВыдСляСт ΠΊΠ°Π΄Ρ€, опрСдСляСмый Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ ΠΈ индСксом.

Π—Π°Π΄Π°Π΅Ρ‚ Ρ†Π²Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ пиксСля Π² этом ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Bitmap.

БохраняСт элСмСнт свойства (Ρ‡Π°ΡΡ‚ΡŒ ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½Ρ‹Ρ…) Π² Image.

Π—Π°Π΄Π°Π΅Ρ‚ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для этого изобраТСния Bitmap.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ строку, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΡƒΠ΅Ρ‚ это ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Bitmap ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти.

Π―Π²Π½Ρ‹Π΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса

ЗаполняСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ SerializationInfo Π΄Π°Π½Π½Ρ‹ΠΌΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΌΠΈ для сСриализации Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *