ΠΡΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ½ΠΎΠΏΠΊΡ. ΠΠ½ΠΎΠΏΠΊΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ½Π° ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π»ΠΈΡΡ Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΎΠ½Π° Π΄Π»Ρ ΡΠΎΡΠΌΡ. Π Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π±ΡΠ΄Π΅Ρ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΡΡ, Ρ ΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π΅Π΅ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. Π§ΡΠΎΠ±Ρ Π²ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ Π·Π°ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΎ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΡΠΎΠ΄ OnPaint(). ΠΠΎΠ²ΡΠΉ ΠΊΠΎΠ΄ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.16.
ΠΠΈΡΡΠΈΠ½Π³ 6.16protected override void OnPaint(PaintEventArgs e) {
// ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ· ΡΠ΅ΡΡΡΡΠΎΠ² Bitmap
backgroundImage = new Bitmap(Assembly.GetExecutingAssembly().
GetManifestResourceStream("BackgroundImageCS.sochicat.jpg"));
e.Graphics.DrawImage(backgroundImage, this.ClientRectangle,
new Rectangle(0, 0, backgroundImage.Width, backgroundImage.Height),
GraphicsUnit.Pixel);
}
ΠΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΡΠ²ΠΈΠ΄Π΅ΡΡ, ΡΡΠΎ ΡΠΎΡΠΌΠ° ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ½ΠΎΠ²ΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ, Π° ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° ΠΏΠΎΠ²Π΅ΡΡ ΡΠΎΠ½Π° (ΡΠΈΡ. 6.3).
Π ΠΈΡ. 6.3. ΠΠ°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΎΠ½Π° ΡΠΎΡΠΌΡ ΡΠ²ΠΎΠΈΠΌ ΡΠΈΡΡΠ½ΠΊΠΎΠΌ
ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ½ΠΊΠ°
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° .NET Compact Framework 1.0 Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠ΅ΡΠΎΠ΄ System.Drawing.Image.Clone, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠΎΡΠ½ΡΡ ΠΊΠΎΠΏΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΡΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ². ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΡΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.17.
ΠΠΈΡΡΠΈΠ½Π³ 6.17// ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ
protected Bitmap CopyBitmap(Bitmap source) {
return new Bitmap(source);
}
// ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ ΡΠ°ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
protected Bitmap CopyBitmap(Bitmap source, Rectangle part) {
Bitmap bmp = new Bitmap(part.Width, part.Height);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, 0, 0, part, GraphicsUnit.Pixel);
g.Dispose();
return bmp;
}
private void button1_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
Bitmap myBMP = new Bitmap(@"\windows\banner.gif");
// ΠΠΎΠ»ΠΎΠ²ΠΈΠ½Π° ΡΠΈΡΠΈΠ½Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
int left = myBMP.Size.Width / 2;
// ΠΠΎΠΏΠΈΡΡΠ΅ΠΌ Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Bitmap
clone = CopyBitmap(myBMP);
// ΠΊΠΎΠΏΠΈΡΡΠ΅ΠΌ Π»Π΅Π²ΡΡ ΡΠ°ΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
Bitmap part =
CopyBitmap(myBMP, new Rectangle(0, 0, left, myBMP.Size.Height));
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΏΠΎ Π²Π΅ΡΡΠΈΠΊΠ°Π»ΠΈ:
// ΠΈΡΡΠΎΡΠ½ΠΈΠΊ, ΠΊΠΎΠΏΠΈΡ ΠΈ ΠΊΠΎΠΏΠΈΡ Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ
int y = 10;
// ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°-ΠΈΡΡΠΎΡΠ½ΠΈΠΊ
g.DrawImage(myBMP, 10, y);
y += myBMP.Height + 10;
// ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ°-ΠΊΠΎΠΏΠΈΡ
g.DrawImage(clone, 10, y);
y += clone.Height + 10;
// ΠΊΠΎΠΏΠΈΡ Π»Π΅Π²ΠΎΠΉ ΡΠ°ΡΡΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
g.DrawImage(part, 10, y);
y += part.Height + 10;
g.Dispose();
}
private void button2_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
Bitmap myBMP = new Bitmap(@"\windows\banner.gif");
g.Clear(Color.White);
int left = myBMP.Size.Width / 2; // ΠΠΎΠΏΠΈΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ
Bitmap clone = (Bitmap)myBMP.Clone();
int y = 10;
g.DrawImage(myBMP, 10, y);
y += myBMP.Height + 10;
g.DrawImage(clone, 10, y);
y += clone.Height + 10;
g.Dispose();
}
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π΄Π²Π΅ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° CopyImage. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ ΠΈΠ»ΠΈ Π΅Π΅ ΡΠ°ΡΡΡ. ΠΠ»Ρ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Π² ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π±ΡΠ»ΠΎ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° Clone, Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ Π² .NET Compact Framework 2.0. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° ΡΠΈΡ. 6.4.
Π ΠΈΡ. 6.4. ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΠ°Π·Π½ΡΠΌΠΈ ΡΠΏΠΎΡΠΎΠ±Π°ΠΌΠΈ
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° .NET Compact Framework ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π°Π»Π°Π³Π°Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π½Π΅Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΠΎΠ΄Π°, ΠΊΠ°ΠΊ MakeTransparent. ΠΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π΄Π°ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° SetColorKey ΠΊΠ»Π°ΡΡΠ° ImageAttributes. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ ΡΠ²Π΅Ρ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ° Π² Π²Π΅ΡΡΠΈΠΈ ΠΌΠ΅ΡΠΎΠ΄Π° ImageAttributes.SetColorKey(Color.Color).
ΠΠ ΠΠΠΠ§ΠΠΠΠΠΡΠΎΡΠ°Ρ ΠΏΠ΅ΡΠ΅Π³ΡΡΠΆΠ΅Π½Π½Π°Ρ Π²Π΅ΡΡΠΈΡ ΠΌΠ΅ΡΠΎΠ΄Π° ImageAttributes.SetColorKey(Color, Color, ColorAdjustType) Π² .NET Compact Framework Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ.
ΠΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΊΡΠ°ΡΠΈΠ²ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΏΡΠΈ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π½Π° ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ. ΠΡΠΎΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠΎΠΈΡ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅.
ΠΠ»Ρ ΡΠ΅ΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π±ΡΠ»ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Ρ Π΄Π²Π΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ. ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΠ΅ΠΉ ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠΎΡΠ°, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ Ρ ΡΠ°Π½ΠΈΡΡΡ Π½Π΅Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°Π±Π»ΠΈΡΠΊΠ° Ρ Π΅Π³ΠΎ ΠΈΠΌΠ΅Π½Π΅ΠΌ, ΡΠ΄Π΅Π»Π°Π½Π½Π°Ρ Π·Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Paint. ΠΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°Π±Π»ΠΈΡΠΊΠΈ ΡΠΎΠ½ Π±ΡΠ» Π·Π°Π»ΠΈΡ ΠΊΡΠ°ΡΠ½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ, Π° Π΄Π»Ρ ΡΠ΅ΠΊΡΡΠΎΠ²ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ» Π²ΡΠ±ΡΠ°Π½ Π΄ΡΡΠ³ΠΎΠΉ ΡΠΎΠ½. ΠΠ°ΡΠ΅ΠΌ ΠΎΠ±Π° ΡΠΈΡΡΠ½ΠΊΠ° Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡ ΠΊΠ°ΠΊ ΡΠ΅ΡΡΡΡΡ.
Π§ΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΡΡΠ΅ΠΊΡ, Π½Π°Π΄ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ Π½Π° ΡΠΎΡΠΌΠ΅ Π΄Π²Π΅ ΠΊΠ½ΠΎΠΏΠΊΠΈ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΠ°Π±Π»ΠΈΡΠΊΠ° Π±ΡΠ΄Π΅Ρ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΡΠΎΠ³ΡΠ°ΡΠΈΡ Π±Π΅Π· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠΈ Π½Π°ΠΆΠ°ΡΠΈΠΈ Π½Π° Π²ΡΠΎΡΡΡ ΠΊΠ½ΠΎΠΏΠΊΡ ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΡΠ½Π°ΡΠ°Π»Π° Π±ΡΠ΄Π΅Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ ΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΠΎΠΌ ΠΏΡΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.18.
ΠΠΈΡΡΠΈΠ½Π³ 6.18private void butAddImage_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
// ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈΠ· ΡΠ΅ΡΡΡΡΠΎΠ²
Bitmap imgCat = new Bitmap(Assembly.GetExecutingAssembly().
GetManifestResourceStream("TransparentCS.mycat.jpg"));
Bitmap imgName = new Bitmap(Assembly.GetExecutingAssembly().
GetManifestResourceStream("Transparent_CS.catname.bmp"));
g.DrawImage(imgCat, 0, 0,
new Rectangle(0, 0, imgCat.Width, imgCat.Height), GraphicsUnit.Pixel);
g.DrawImage(imgName, 50, 120,
new Rectangle(0, 0, imgName.Width.imgName.Height), GraphicsUnit.Pixel);
g.Dispose();
}
private void butImage2_Click(object sender, EventArgs e) {
Graphics g = CreateGraphics();
// ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΠΈΠ· ΡΠ΅ΡΡΡΡΠΎΠ²
Bitmap imgCat = new BitmapCAssembly.GetExecutingAssembly().
GetManifestResourceStream("Transparent_CS.mycat.jpg"));
Bitmap imgName = new Bitmap(Assembly.GetExecutingAssembly().
GetManifestResourceStream("Transparent_CS.catname.bmp"));
// ΠΡΠΈΡΡΠΈΠΌ ΡΠΊΡΠ°Π½
g.Clear(Color.White);
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠ΅ΡΠ²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ
g.DrawImage(imgCat, 0, 0,
new Rectangle(0, 0, imgCat.Width, imgCat.Height), GraphicsUnit.Pixel);
ImageAttributes attr = new ImageAttributes();
// Π£ΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΊΡΠ°ΡΠ½ΡΠΉ ΡΠ²Π΅Ρ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΉ
attr.SetColorKey(Color.Red, Color.Red);
// ΠΡΠ²ΠΎΠ΄ΠΈΠΌ Π²ΡΠΎΡΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌΠΈ Π°ΡΡΠΈΠ±ΡΡΠ°ΠΌΠΈ
Rectangle dstRect = new Rectangle(50, 120, imgName.Width, imgName.Height);
g.DrawImage(imgName, dstRect, 0, 0,
imgName.Width, imgName.Height, GraphicsUnit.Pixel.attr);
g.Dispose();
}
ΠΠΠΠΠΠΠΠHe Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½ System.Drawing.Imaging ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ ΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ.
ΠΡΠ»ΠΈ ΠΏΡΠΎΡΡΠΎ Π½Π°Π»ΠΎΠΆΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ Π½Π° Π΄ΡΡΠ³ΡΡ, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π±ΡΠ΄Π΅Ρ, ΠΌΡΠ³ΠΊΠΎ Π³ΠΎΠ²ΠΎΡΡ, Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΊΡΠ°ΡΠΈΠ²ΡΠΌ (ΡΠΈΡ. 6.5).
Π ΠΈΡ. 6.5. ΠΠ΅ΡΠ΄Π°ΡΠ½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΊΠ°ΡΡΠΈΠ½ΠΎΠΊ
ΠΡΠ»ΠΈ ΠΆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ SetColorKey Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ²Π΅ΡΠ°, ΡΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ Π½Π°Π»ΠΎΠΆΠ΅Π½ΠΈΡ Π΄Π²ΡΡ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΄ΠΎΡΡΠΎΠΉΠ½ΠΎ (ΡΠΈΡ. 6.6).
Π ΠΈΡ. 6.6. ΠΠ°Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠΊΡΡΠ³Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ
Π’Π°ΠΊ ΠΊΠ°ΠΊ .NET Compact Framework Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΎΠΊΡΡΠ³Π»Π΅Π½Π½ΡΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΌΠΈ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ, ΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ. Π ΡΡΠΎΠΌ ΡΠ°Π·Π΄Π΅Π»Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ ΠΠ»Π΅ΠΊΡΠΎΠΌ Π―Ρ Π½ΠΈΠ½ΡΠΌ (Alex Yakhnin) Π² Π΅Π³ΠΎ Π±Π»ΠΎΠ³Π΅ blog.opennetcf.org/ayakhnin/. ΠΠ»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΡΠ΅ΠΊΡΠ° Π½Π°Π΄ΠΎ Π½Π°ΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠΈΡ Π»ΠΈΠ½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΠ»Π»ΠΈΠΏΡΡ, ΠΈ Π·Π°ΠΊΡΠ°ΡΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΡΠΏΠ»ΠΎΡΠ½ΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ (ΡΠΈΡ. 6.7).
Π ΠΈΡ. 6.7. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ° ΡΠΎ ΡΠΊΡΡΠ³Π»Π΅Π½Π½ΡΠΌ ΡΠ³Π»Π°ΠΌΠΈ
Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 6.19.
ΠΠΈΡΡΠΈΠ½Π³ 6.19public static void DrawRoundedRectangle(Graphics g, Pen p, Color backColor,
Rectangle rc, Size size) {
Point[] points = new Point[8];
// ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΠΌ ΡΠΎΡΠΊΠΈ Π΄Π»Ρ ΡΠΈΠ³ΡΡΡ
points[0].X = rc.Left + size.Width / 2;
points[0].Y = rc.Top + 1;
points[1].X = rc.Right - size.Width / 2;
points[1].Y = rc.Top + 1;
points[2].X = rc.Right;
points[2].Y = rc.Top + size.Height / 2;
points[3].X = rc.Right;
points[3].Y = rc.Bottom - size.Height / 2;
points[4].X = rc.Right - size.Width / 2;
points[4].Y = rc.Bottom;
points[5].X = rc.Left + size.Width / 2;
points[5].Y = rc.Bottom;
points[6].X = rc.Left + 1;
points[6].Y = rc.Bottom - size.Height / 2;
points[7].X = rc.Left + 1;
points[7].Y = rc.Top + size.Height / 2;
// ΠΏΡΠΈΠ³ΠΎΡΠΎΠ²ΠΈΠΌ ΠΊΠΈΡΡΡ Π΄Π»Ρ ΡΠΎΠ½Π°
Brush fillBrush = new SolidBrush(backColor);
// ΡΠΈΡΡΠ΅ΠΌ ΠΎΡΡΠ΅Π·ΠΊΠΈ ΠΈ ΠΊΡΡΠ³ΠΈ Π΄Π»Ρ ΠΎΠΊΡΡΠ³Π»Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΡΠΌΠΎΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠ°