Программирование C#
понедельник, 15 декабря 2014 г.
понедельник, 17 июня 2013 г.
Նկարչական գործիքի ստեղծումը C#-ի օգնությամբ (մաս 1)
Կարծում եմ բոլորին ծանոթ է Windows-ի ստանդարտ ծրագրերում գտնվող Paint ծրագիրը, որը հնարավորություն է տալիս կատարել հիմնական գործողություններ նկարների հետ: Նաև ծրագրի օգնությամբ կարող ենք ընտրել որոշակի գույնով և հաստությամբ մատիտ և նկարել: Այս և մի քանի հաջորդ հոդվածներում կփորձենք C#-ի օգնությամբ ստանալ Paint ծրագրի ֆունկցիոնալությանը մոտ ծրագիր:
1. Ստեղծեք նոր պրոյեկտ - File -> New Project
2. Ընտրեք Visual C# - Windows Forms Application, անվանեք պրոյեկտը Paint (կամ այնպես
ինչպես ինքներդ էք ցանկանում) և սեղմեք OK
3. Հայտնված Form-ի վրա ավելացրեք երկու կոճակ, մեկ Panel և ColorDialog
Form-ը պետք է ունենա այսպիսի տեսք
Այս հոդվածում կներկայացնեմ ամենաբարակ մատիտով նկարելու ֆունկցիոնալությունը:
Փորձենք նկարագրել քայլերի հաջորդականությունը, որով օգտագործողը պետք է նկարի ինչ-որ պատկեր:
1. Սեղմում է մկնիկի ձախ կոճակը
2. Տեղափոխում է մկնիկը որոշակի հետագծով, այդ հետագծով նկարվում է որոշակի պատկեր
3. Բաց է թողնում մկնիկի ձախ կոճակը
Բացենք Form-ի ծրագրի կոդը և սկսենք գրել ծրագիրը:
Ծրագրում հնարավորություն է տրվելու ընտրել մատիտի գույնը, սակայն լռելյալն (default) այն կլինի սև, դրա համար նկարագրենք Color տիպի հետևյալ փոփոխականը
Color CurrentColor = Color.Black;
Ժամանակի ցանկացած պահին մկնիկի ձախ կոճակի սեղմված լինելու փաստը կստուգվի bool տիպի isPressed փոփոխականով
bool isPressed = false;
Երբ մկնիկի կոճակը սեղմելուց հետո այն շարժում ենք Panel-ի վրայով, մկնիկի յուրաքանչյուր դիրքում կարող ենք ունենալ մկնիկի ընթացիկ և նախորդ դիրքերը, դրա համար նկարագրենք հետևյալ փոփոխականները
Point CurrentPoint;
Point PrevPoint;
Եվ վերջում նկարելու համար կօգտագործենք հետևյալ փոփոխականը
Graphics g;
Ստեղծենք գույնի ընտրության համար նախատեսված իրադարձությունը (Event), և ավելացնենք հետևյալ կոդը
private void button1_Click(object sender, EventArgs e)
{
DialogResult D = colorDialog1.ShowDialog();
if (D == System.Windows.Forms.DialogResult.OK)
CurrentColor = colorDialog1.Color;
}
Իսկ նկարածը մաքրելու համար, հետևյալ իրադարձությունը
private void button2_Click_1(object sender, EventArgs e)
{
panel1.Refresh();
}
Մկնիկը սեղմելուն, թողնելուն և շարժելուն հետևելու համար ստեղծենք MouseDown, MouseUp և MouseMove իրադարծությունները:
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
isPressed = true;
CurrentPoint = e.Location;
}
Մկնիկը շարժելիս պետք է ստուգվի պայմանը սեղվմած է ձախ կոճակը թե ոչ: Եթե պայմանը տեղի ունի ապա պետք է ֆիքսել մկնիկի նախորդ դիրքը, ընթացիկ դիրքը և այդ երկու դիրքերով նկարել ուղիղ
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (isPressed)
{
PrevPoint = CurrentPoint;
CurrentPoint = e.Location;
paint_simple();
}
}
paint_simple() ֆունկցիան ունի հետևյալ տեսքը
private void paint_simple()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrevPoint, CurrentPoint);
}
Կարծես թե վերջ
Ահա ծրագրի աշխատանքի օրինակ և ծրագիրն ամբողջությամբ
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Paint
{
public partial class Form1 : Form
{
Color CurrentColor = Color.Black; //Default color
Point CurrentPoint; //Current Position
Point PrevPoint; //Previous Position
bool isPressed;
Graphics g;
public Form1()
{
InitializeComponent();
g = panel1.CreateGraphics();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult D = colorDialog1.ShowDialog();
if (D == System.Windows.Forms.DialogResult.OK)
CurrentColor = colorDialog1.Color;
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
isPressed = true;
CurrentPoint = e.Location;
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (isPressed)
{
PrevPoint = CurrentPoint;
CurrentPoint = e.Location;
paint_simple();
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
isPressed = false;
}
private void paint_simple()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrevPoint, CurrentPoint);
}
private void button2_Click_1(object sender, EventArgs e)
{
panel1.Refresh();
}
}
}
1. Ստեղծեք նոր պրոյեկտ - File -> New Project
2. Ընտրեք Visual C# - Windows Forms Application, անվանեք պրոյեկտը Paint (կամ այնպես
ինչպես ինքներդ էք ցանկանում) և սեղմեք OK
3. Հայտնված Form-ի վրա ավելացրեք երկու կոճակ, մեկ Panel և ColorDialog
Form-ը պետք է ունենա այսպիսի տեսք
Այս հոդվածում կներկայացնեմ ամենաբարակ մատիտով նկարելու ֆունկցիոնալությունը:
Փորձենք նկարագրել քայլերի հաջորդականությունը, որով օգտագործողը պետք է նկարի ինչ-որ պատկեր:
1. Սեղմում է մկնիկի ձախ կոճակը
2. Տեղափոխում է մկնիկը որոշակի հետագծով, այդ հետագծով նկարվում է որոշակի պատկեր
3. Բաց է թողնում մկնիկի ձախ կոճակը
Բացենք Form-ի ծրագրի կոդը և սկսենք գրել ծրագիրը:
Ծրագրում հնարավորություն է տրվելու ընտրել մատիտի գույնը, սակայն լռելյալն (default) այն կլինի սև, դրա համար նկարագրենք Color տիպի հետևյալ փոփոխականը
Color CurrentColor = Color.Black;
Ժամանակի ցանկացած պահին մկնիկի ձախ կոճակի սեղմված լինելու փաստը կստուգվի bool տիպի isPressed փոփոխականով
bool isPressed = false;
Երբ մկնիկի կոճակը սեղմելուց հետո այն շարժում ենք Panel-ի վրայով, մկնիկի յուրաքանչյուր դիրքում կարող ենք ունենալ մկնիկի ընթացիկ և նախորդ դիրքերը, դրա համար նկարագրենք հետևյալ փոփոխականները
Point CurrentPoint;
Point PrevPoint;
Եվ վերջում նկարելու համար կօգտագործենք հետևյալ փոփոխականը
Graphics g;
Ստեղծենք գույնի ընտրության համար նախատեսված իրադարձությունը (Event), և ավելացնենք հետևյալ կոդը
private void button1_Click(object sender, EventArgs e)
{
DialogResult D = colorDialog1.ShowDialog();
if (D == System.Windows.Forms.DialogResult.OK)
CurrentColor = colorDialog1.Color;
}
Իսկ նկարածը մաքրելու համար, հետևյալ իրադարձությունը
private void button2_Click_1(object sender, EventArgs e)
{
panel1.Refresh();
}
Մկնիկը սեղմելուն, թողնելուն և շարժելուն հետևելու համար ստեղծենք MouseDown, MouseUp և MouseMove իրադարծությունները:
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
isPressed = true;
CurrentPoint = e.Location;
}
Մկնիկը շարժելիս պետք է ստուգվի պայմանը սեղվմած է ձախ կոճակը թե ոչ: Եթե պայմանը տեղի ունի ապա պետք է ֆիքսել մկնիկի նախորդ դիրքը, ընթացիկ դիրքը և այդ երկու դիրքերով նկարել ուղիղ
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (isPressed)
{
PrevPoint = CurrentPoint;
CurrentPoint = e.Location;
paint_simple();
}
}
paint_simple() ֆունկցիան ունի հետևյալ տեսքը
private void paint_simple()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrevPoint, CurrentPoint);
}
Կարծես թե վերջ
Ահա ծրագրի աշխատանքի օրինակ և ծրագիրն ամբողջությամբ
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Paint
{
public partial class Form1 : Form
{
Color CurrentColor = Color.Black; //Default color
Point CurrentPoint; //Current Position
Point PrevPoint; //Previous Position
bool isPressed;
Graphics g;
public Form1()
{
InitializeComponent();
g = panel1.CreateGraphics();
}
private void button1_Click(object sender, EventArgs e)
{
DialogResult D = colorDialog1.ShowDialog();
if (D == System.Windows.Forms.DialogResult.OK)
CurrentColor = colorDialog1.Color;
}
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
isPressed = true;
CurrentPoint = e.Location;
}
private void panel1_MouseMove(object sender, MouseEventArgs e)
{
if (isPressed)
{
PrevPoint = CurrentPoint;
CurrentPoint = e.Location;
paint_simple();
}
}
private void panel1_MouseUp(object sender, MouseEventArgs e)
{
isPressed = false;
}
private void paint_simple()
{
Pen p = new Pen(CurrentColor);
g.DrawLine(p, PrevPoint, CurrentPoint);
}
private void button2_Click_1(object sender, EventArgs e)
{
panel1.Refresh();
}
}
}
Подписаться на:
Комментарии (Atom)

