ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅, ΠΎΡ‡Π΅Π½ΡŒ быстро...
Π Π°Π±ΠΎΡ‚Π°Π΅ΠΌ вмСстС Π΄ΠΎ ΠΏΠΎΠ±Π΅Π΄Ρ‹

Π Π°Π±ΠΎΡ‚Π° с изобраТСниями

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ показываСтся анимация двиТСния ΡˆΠ°Ρ€ΠΈΠΊΠ° (ΠΊΡ€ΡƒΠ³ синСго Ρ†Π²Π΅Ρ‚Π°) Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской области Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΎΡ‚скоком ΠΎΡ‚ Π΅Π΅ Π³Ρ€Π°Π½ΠΈΡ† ΠΏΠΎΠ΄ ΡƒΠ³Π»ΠΎΠΌ 45 градусов: using System; using System. Drawing; using System.Windows.Forms; Рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рисования Π² Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ построСны с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Windows Application. НикакиС элСмСнты Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ся. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ содСрТаниС Ρ„Π°ΠΉΠ»Π°… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π±ΠΎΡ‚Π° с изобраТСниями (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠšΠ»Π°ΡΡΡ‹ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ описаны Π² ΠΏΡ€ΠΎΡΡ‚ранствС ΠΈΠΌΠ΅Π½ System.Drawing.Imaging. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ классом для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ являСтся класс Image — абстрактный Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс, содСрТащий Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для чтСния ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π² Ρ„Π°ΠΉΠ». ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ классом для создания изобраТСния Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти являСтся класс Bitmap, ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹ΠΉ ΠΎΡ‚ ΠΊΠ»Π°ΡΡΠ° Image, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ пиксСлСй, ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… графичСскоС ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅. Π”Π°Π½Π½Ρ‹ΠΉ класс ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹, ΠΊΠ°ΠΊ BMP, GIF, JPEG, PNG ΠΈ TIFF.

Для чтСния изобраТСния ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π»ΠΈΠ±ΠΎ конструктор класса Bitmap, Π»ΠΈΠ±ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ FromFile ():

Bitmap bmp = new Bitmap («c:globe.gif'); ΠΈΠ»ΠΈ.

bmp = (Bitmap)Bitmap.FromFile («c:globe.gif);

Для записи изобраТСния Π² Ρ„Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π² Ρ„Π°ΠΉΠ» Save (). НапримСр:

bmp.Save («c:globe.jpg», System.Drawing.Imaging.ImageFormat.Jpeg);

Для рисования Π² Ρ„ΠΎΡ€ΠΌΠ΅ изобраТСния ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ Drawlmage (). НапримСр:

Bitmap bmp = new Bitmap («C:globe.gif');

// рисованиС ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ 0,0 g. Drawlmage (bmp, 0,0);

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ рисования

Рассмотрим Π΄Π²Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рисования Π² Ρ„ΠΎΡ€ΠΌΠ΅. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ построСны с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Windows Application. НикакиС элСмСнты Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ Π½Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ся. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ содСрТаниС Ρ„Π°ΠΉΠ»Π° Forma1.cs.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выполняСтся рисованиС Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sin ()B ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ измСнСния Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΎΡ‚ -2? Π΄ΠΎ +2?: using System;

Π Π°Π±ΠΎΡ‚Π° с изобраТСниями.

using System. Drawing;

using System.Windows.Forms;

using System.Drawing.Drawing2D;

namespace FunctionSample{ public partial class Forml: Form { int steps = 200; // кол-во шагов public Forml () {.

lnitializeComponent ();

this.SetStyle (ControlStyles.ResizeRedraw, true); this. BackColor = Color. White;

}.

private void Form1_Paint (object sender, PaintEventArgs e) { Graphics gfx = e. Graphics;

Size s = this. ClientSize;

//пСрСнос Π² ΡΠ΅Ρ€Π΅Π΄ΠΈΠ½Ρƒ ΠΈ Π·Π΅Ρ€ΠΊΠ°Π»ΡŒΠ½ΠΎ ΠΏΠΎ Y.

gfx.Transform = new Matrix (1,0, 0, -1, s. Width /2, s. Height/2);

//ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎ X ΠΈ Y.

gfx.ScaleTransform ((float)(s.Width/15.0), (float) (s.Height/2.5));

// Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΈ ΡˆΠ°Π³Π°.

double minX — -2* Math. PI;

double maxX = 2 * Math. PI;

double step = (maxX — minX) / steps;

// созданиС ΠΏΠ΅Ρ€ΡŒΠ΅Π².

Pen pen = new Pen (Color.Crimson, 0.01 F);

Pen pen1 = new Pen (Color.Black, 0.01 F);

// рисованиС осСй.

gfx.DrawLine (pen1, -7.5 °F, OF, 7.5 °F, OF); gfx. DrawLine (pen1, OF, -1.25 °F, OF, 1.25F);

// вычислСниС ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ.

PointF p1 = new PointF ((float)minX, (float)Math.Sin (minX)); PointF p2 = new PointF ();

// Ρ†ΠΈΠΊΠ» вычислСния ΠΈ Ρ€ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ for (double Ρ… = minX; x < maxX; x += step) {.

// вычислСниС 2 Ρ‚ΠΎΡ‡ΠΊΠΈ p2. X = (float)x; p2. Y = (float)Math.Sin (x); gfx. DrawLine (pen, p1, p2); p1 = p2; // сохранСниС Π² 1 Ρ‚ΠΎΡ‡ΠΊΠ΅.

}}" .

Π Π°Π±ΠΎΡ‚Π° с изобраТСниями.

ВсС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ классы ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ описаны Ρ€Π°Π½Π΅Π΅. ΠŸΡ€ΠΈ Π·Π°Π΄Π°Π½ΠΈΠΈ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ использовалась ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ (15×2.5), учитывая, Ρ‡Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Sin () — ΠΎΡ‚ -1 Π΄ΠΎ +1, Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ мСняСтся Π² ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π΅ ΠΎΡ‚ -2? Π΄ΠΎ +2?.

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ показываСтся анимация двиТСния ΡˆΠ°Ρ€ΠΈΠΊΠ° (ΠΊΡ€ΡƒΠ³ синСго Ρ†Π²Π΅Ρ‚Π°) Π² ΠΊΠ»ΠΈΠ΅Π½Ρ‚ской области Ρ„ΠΎΡ€ΠΌΡ‹ с ΠΎΡ‚скоком ΠΎΡ‚ Π΅Π΅ Π³Ρ€Π°Π½ΠΈΡ† ΠΏΠΎΠ΄ ΡƒΠ³Π»ΠΎΠΌ 45 градусов: using System; using System. Drawing; using System.Windows.Forms;

namespace MoveBall {.

public partial class Forml: Form {.

Graphics gfx;

Random rnd = new RandomQ; int x, y, dx, dy;

int pWidth = 20, pHeight = 20;

Timer timerl = new Timer (); public Form 1() {.

lnitializeComponent (); gfx = CreateGraphics ();

}.

private void Form1_Load (object sender, EventArgs e) { x = rnd. Next (ClientSize.Width); Ρƒ = rnd. Next (ClientSize.Height); dx = dy = 5;

timerl .Tick += timerl _Tick; timerl. Interval = 20; timerl. Start ();

}.

private void Form1_Paint (object sender, PaintEventArgs e) { gfx. DrawEllipse (Pens.Blue, x, y, pWidth, pHeight);

}.

private void timer1_Tick (object sender, EventArgs e) {.

if ((x+pWidth+dx) > ClientSize. Width || (x+dx) ClientSize. Height || (y+dy)<0) dy *= -1; x += dx;

Y += dy;

lnvalidate ();

}}}.

ΠΠ°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎ распрСдСлСнных случайных чисСл. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΡˆΠ°Ρ€ΠΈΠΊΠ° выполняСтся с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ событий Tick, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Timer. Π”Π°Π½Π½Ρ‹ΠΉ класс являСтся ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠΌ, ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Π° Visual Studio. Однако для простоты Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса описан ΠΈ ΡΠΎΠ·Π΄Π°Π½ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса ΡΠ²Π»ΡΡŽΡ‚ΡΡ:

  • β€’ int Interval (n) — Π·Π°Π΄Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Π° ΠΌΠ΅ΠΆΠ΄Ρƒ событиями Tick, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π΄Π°Π½Π½ΠΎΠ³ΠΎ класса Π² ΠΌΠΈΠ»Π»ΠΈΡΠ΅ΠΊΡƒΠ½Π΄Π°Ρ… (тысячныС Π΄ΠΎΠ»ΠΈ сСкунда);
  • β€’ void Start () — Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий Tick;
  • β€’ void Stop () — ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ событий Tick.

ΠŸΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ события Tick Π²Π½Π°Ρ‡Π°Π»Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‚ΡΡ условия Π²Ρ‹Ρ…ΠΎΠ΄Π° ΡˆΠ°Ρ€ΠΈΠΊΠ° Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Ρ‹ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ся Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π΅Π³ΠΎ пСрСмСщСния ΠΏΠΎ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ Ρ… ΠΈ Ρƒ. ПослС этого ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Ρ‹ ΡˆΠ°Ρ€ΠΈΠΊΠ° ΠΏΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΈ Π²ΡΡ клиСнтская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ΡΡ испорчСнной с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Ρ„ΠΎΡ€ΠΌΡ‹ lnvalidate (). Π­Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ событиС Paint, ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ выполняСтся рисованиС ΡˆΠ°Ρ€ΠΈΠΊΠ° для Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ