using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Drawing.Drawing2D; namespace GraphCreator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Point start, end; List<Point> a = new List<Point>();//массив для хранения точек private void Form1_Load(object sender, EventArgs e) { this.pictureBox1.Image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);//для чего это не знаю } private void pictureBox1_MouseDown(object sender, MouseEventArgs e)//при нажатии кнопки мыши { start = e.Location;//записываем начальные координаты this.Invalidate(); } private void pictureBox1_MouseEnter(object sender, EventArgs e)//при попадании мыши на picturebox { Cursor = Cursors.Cross;//курсор становится крестом } private void Form1_MouseEnter(object sender, EventArgs e)//при попадании мыши на форму { Cursor = Cursors.Default;//курсор становится стандартным } private void pictureBox1_MouseUp(object sender, MouseEventArgs e)//при отпускании мыши { end = e.Location;//записываем конечные координаты this.Invalidate(); pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);//подключаем событие Paint } private void pictureBox1_Paint(object sender, PaintEventArgs e)//событие рисования { Graphics g = e.Graphics;//создаём местную версию графического объекта для picturebox Pen p = new Pen(Color.Black, 2);//создаём перо // g.DrawLine(p, start, end);//рисуем линию // int x1=start.X; // int y1=start.Y; // int x2=end.X; //int y2=end.Y; //g.DrawEllipse(p, x1,y1,x2,y2); pictureBox1.Refresh(); Line tmp = new Line(start,end,a);//создание объекта в событии paint Line.Drawlines(tmp);//вызов метода-здесь ошибка Для нестатического поля, метода или свойства "GraphCreator.Form1.Line.Drawlines(GraphCreator.Form1.Line)" требуется ссылка на объект } public class Line { public Point p1,p2; public List<Point> a = new List<Point>(); Graphics g = Graphics.FromHwndInternal(hwnd);//как здесь прописать экземпляр класса Graphics от picturebox public Line(Point p1,Point p2,List<Point> a)//закидываем координаты точек в список { a.Add(p1); a.Add(p2); } public void Drawlines(Line tmp)//метод для отрисовки линий объекта tmp { Pen p = new Pen(Color.Black, 2); for (int i = 0; i < a.Count; i=+2) { g.DrawLine(p, a[i], a[i + 1]); } } } } }
Рассылка закрыта
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Программирование (VB,C#,ASP,.NET): новости, советы, примеры
Выпуск # 686Друзья! Прошло совсем мало времени с момент последнего выпуска, и вот уже новый! Удивительно, как быстро летит время в Интернете, сколько всего нового происходит ежедневно, да что там, ежесекундно. И Kbyte.Ru в этом плане не исключение, на сайте столько всего произошло, столько всего, что многое даже и не влезло в этот выпуск! И кто только придумал ограничения скорости интернет-соединения и объемов писем! Эх..., благо на сайте есть живая лента событий, которая не даст потеряться среди гущи
событий. Содержание выпускаЧитайте в этом выпуске:
Форумы Kbyte.RuНа форумах Kbyte.Ru постоянно появляются новые интересные темы и обсуждения. В этом выпуске представлены лишь новые темы, с момента прошлой рассылки. Кстати, любой желающий может на форумах Kbyte.Ru совершенно свободно получить помощь грамотных специалистов в области программирования, да и в целом информационных технологий. Задать свой вопрос прямо сейчас Создать экземпляр класса Graphics для метода в своём классе. @GreatTalker 16.05.2012 11:53 Всем привет.Делаю графический редактор,нужно,чтобы отрисовывались на контроле picturebox
линии из списка lines.Для этого создал класс Line,где данные для объекта tmp берутся из координат на контроле picturebox в обработчиках событий MouseDown и MouseUp.Для отрисования линий я беру точки из списка a и реализую рисование в методе Drawlines,но я не понял как создать экземляр объекта graphics компонента picturebox,чтобы в методе получалась прорисовка.Помогите,пожалуйста. Ответ #1 @Aleksey Nemiro 16.05.2012 20:51 Graphics g = Graphics.FromHwndInternal(hwnd);//как здесь прописать экземпляр класса Graphics от pictureboxпроще всего передавать по ссылке public Line(Graphics g, Point p1,Point p2,List<Point> a) ... ... Line tmp = new Line(g, start,end,a); ... Открыть\закрыть вкладку модемы, считать эту вкладку @Ципихович Эндрю 16.05.2012 11:06 Здравствуйте одним из трёх способов открываю вкладку модемы 'control.exe — служит для работы с панелью управления 'telephon.cpl — оснастка панели управления для телефонии '1 — номер вкладки, которую нужно активировать при открытии (отсчет с нуля) Shell "control.exe telephon.cpl,,1" 'можно и так сразу открывается вторая вкладка Shell "control.exe modem.cpl" 'MyID - идентификатор процесса MyID = Shell("rundll32.exe shell32.dll, Control_RunDLL modem.cpl, Modems", vbNormalFocus) как закрыть эту вкладку? Подскажите код Спасибо Ответ #1 @Ципихович Эндрю 16.05.2012
16:40 Открыли - закрыли вкладку Option Explicit Private Declare Function GetForegroundWindow Lib "user32" () As Long ' Sub OpenОткрыть_вкладку_модемы() 'отключаем дёргание экрана при выполнении кода Application.ScreenUpdating = False '1 'control.exe — служит для работы с панелью управления 'telephon.cpl — оснастка панели управления для телефонии '1 — номер вкладки, которую нужно активировать при открытии (отсчет с нуля) 'Shell "control.exe telephon.cpl,,1" '2 'можно и так сразу открывается вторая вкладка 'Shell "control.exe modem.cpl" '3 Shell "rundll32.exe shell32.dll, Control_RunDLL modem.cpl, Modems", vbNormalFocus 'MyID - идентификатор процесса 'MyID = Shell("rundll32.exe shell32.dll, Control_RunDLL modem.cpl, Modems", vbNormalFocus) 'закрыть вкладку SendMessage GetForegroundWindow, &H10, 0&, 0& 'отменяем отключенное ранее дёргание экрана при выполнении кода Application.ScreenUpdating = True End Sub можно это сделать "втёмную", как считать вкладку между открытием и закрытием и поместить её в picturebox?, это возможно? Подскажите код Десериализация JSON VK API @korshunovartem 15.05.2012 18:30 Запрос https://api.vk.com/method/messages.get выдает ответ в формате JSON, который выглядит следующим образом: {"response":[4680,{"body":"спасибо тебе...<br>да...пройдет....","title":"Re: ...", "date":1268213453,"uid":28672529,"mid":10836,"read_state":0},{"body":"не за что)", "title":"Re: ...","date":1268213443,"uid":58416643,"mid":10835,"read_state":0}]} Проблема возникает с "4680". Так как этому значению не присвоено названия параметра. как десериализировать этот запрос в C#? Вот мои наброски: using System; using System.Collections.Generic; using System.IO; using System.Text; using Newtonsoft.Json; namespace vkLibrary.Messages { [JsonObject()] public class Messages { [JsonProperty(PropertyName = "")] public int _count; [JsonProperty(PropertyName = "response")] public List<Message> _messages; public Messages() { } public static Messages LoadFromFile() { Stream file = System.Windows.Application.GetResourceStream(new Uri("messages", UriKind.Relative)).Stream; JsonSerializer ser = new JsonSerializer(); JsonReader jr = new JsonTextReader(new StreamReader(file)); Messages m = new Messages(); m = (Messages)ser.Deserialize(jr, typeof(Messages)); return m; } } [JsonObject()] public class Message { private readonly System.DateTime unixTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); #region Fields /// <summary> /// ID сообщения. Не передаётся для пересланных сообщений. /// </summary> internal long _mid; /// <summary> /// Автор сообщения /// </summary> [JsonProperty(PropertyName = "uid")] internal long _uid; /// <summary> /// Дата отправки сообщения. /// </summary> [JsonProperty(PropertyName = "date")] internal long _date; /// <summary> /// Статус прочтения сообщения (0 – не прочитано, 1 – прочитано) Не передаётся для пересланных сообщений. /// </summary> [JsonProperty(PropertyName = "read_state")] internal int _read_state; /// <summary> /// Тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений. /// </summary> [JsonProperty(PropertyName = "out")] internal int _out; /// <summary> /// Заголовок сообщения или беседы. /// </summary> [JsonProperty(PropertyName = "title")] internal string _title; /// <summary> /// Текст сообщения. /// </summary> [JsonProperty(PropertyName = "body")] internal string _body; /// <summary> /// (только для групповых бесед) ID беседы. /// </summary> [JsonProperty(PropertyName = "chat_i")] internal int _chat_id; /// <summary> /// (только для групповых бесед) ID последних участников беседы, разделённых запятыми, но не более 6. /// </summary> [JsonProperty(PropertyName = "chat_active")] internal int _chat_active; /// <summary> /// (только для групповых бесед) количество участников в беседе. /// </summary> [JsonProperty(PropertyName = "users_count")] internal int _users_count; /// <summary> /// (только для групповых бесед) ID создателя беседы. /// </summary> [JsonProperty(PropertyName = "admin_id")] internal int _admin_id; #endregion #region Properties /// <summary> /// ID сообщения. Не передаётся для пересланных сообщений. /// </summary> public long Mid { get { return this._mid; } private set { this._mid = value; } } /// <summary> /// Автор сообщения /// </summary> public long Uid { get { return this._uid; } private set { this._uid = value; } } /// <summary> /// Дата отправки сообщения. /// </summary> public DateTime Date { get { return unixTime.AddSeconds((double)this._date); } private set { this._date = (long)(value - unixTime).TotalSeconds; } } /// <summary> /// Статус прочтения сообщения (0 – не прочитано, 1 – прочитано) Не передаётся для пересланных сообщений. /// </summary> public int Read_state { get { return this._read_state; } private set { this._read_state = value; } } /// <summary> /// Тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений. /// </summary> public int Out { get { return this._out; } private set { this._out = value; } } /// <summary> /// Заголовок сообщения или беседы. /// </summary> public string Title { get { return this._title; } private set { this._title = value; } } /// <summary> /// Текст сообщения. /// </summary> public string Body { get { return this._body; } private set { this._body = value; } } /// <summary> /// (только для групповых бесед) ID беседы. /// </summary> public int Chat_id { get { return this._chat_id; } private set { this._chat_id = value; } } /// <summary> /// (только для групповых бесед) ID последних участников беседы, разделённых запятыми, но не более 6. /// </summary> public int Chat_active { get { return this._chat_active; } private set { this._chat_active = value; } } /// <summary> /// (только для групповых бесед) количество участников в беседе. /// </summary> public int User_count { get { return this._users_count; } private set { this._users_count = value; } } /// <summary> /// (только для групповых бесед) ID создателя беседы. /// </summary> public int Admin_id { get { return this._admin_id; } private set { this._admin_id = value; } } #endregion } } Ответ #1 @Aleksey Nemiro 16.05.2012 10:11 {"response":[4680,{"body":"спасибо тебе...<br>да...пройдет....","title":"Re: ...",response - это массив, т.е. в C# для этого должен использовать какой-нибудь ArrayList или List<object>. public List<Message> _messages;вот тут, вместо Message поставить неопределенный тип - object. public List<object> _messages; Ответ #2 @korshunovartem 17.05.2012 15:00 Спасибо, буду пробовать:) Ответ #3 @korshunovartem 17.05.2012 19:14 Вот исправленный рабочий вариант: using System; using System.Linq; using System.Collections.Generic; using System.IO; using System.Text; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace vkLibrary.Messages { [JsonObject()] public class Messages { [JsonProperty(PropertyName = "response")] public List<Message> _messages; public Messages() { } public static Messages LoadFromFile() { Stream file = System.Windows.Application.GetResourceStream(new Uri("messages", UriKind.Relative)).Stream; JsonReader jr = new JsonTextReader(new StreamReader(file)); JObject jObject = JObject.Load(jr); Messages m = new Messages(); m._messages = jObject["response"].Children().Where(c => c.HasValues).Select(c => c.ToObject<Message>()).ToList(); return m; } } [JsonObject()] public class Message { private readonly System.DateTime unixTime = new System.DateTime(1970, 1, 1, 0, 0, 0, 0); #region Fields /// <summary> /// ID сообщения. Не передаётся для пересланных сообщений. /// </summary> internal long _mid; /// <summary> /// Автор сообщения /// </summary> [JsonProperty(PropertyName = "uid")] internal long _uid; /// <summary> /// Дата отправки сообщения. /// </summary> [JsonProperty(PropertyName = "date")] internal long _date; /// <summary> /// Статус прочтения сообщения (0 – не прочитано, 1 – прочитано) Не передаётся для пересланных сообщений. /// </summary> [JsonProperty(PropertyName = "read_state")] internal int _read_state; /// <summary> /// Тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений. /// </summary> [JsonProperty(PropertyName = "out")] internal int _out; /// <summary> /// Заголовок сообщения или беседы. /// </summary> [JsonProperty(PropertyName = "title")] internal string _title; /// <summary> /// Текст сообщения. /// </summary> [JsonProperty(PropertyName = "body")] internal string _body; /// <summary> /// (только для групповых бесед) ID беседы. /// </summary> [JsonProperty(PropertyName = "chat_i")] internal int _chat_id; /// <summary> /// (только для групповых бесед) ID последних участников беседы, разделённых запятыми, но не более 6. /// </summary> [JsonProperty(PropertyName = "chat_active")] internal int _chat_active; /// <summary> /// (только для групповых бесед) количество участников в беседе. /// </summary> [JsonProperty(PropertyName = "users_count")] internal int _users_count; /// <summary> /// (только для групповых бесед) ID создателя беседы. /// </summary> [JsonProperty(PropertyName = "admin_id")] internal int _admin_id; #endregion #region Properties /// <summary> /// ID сообщения. Не передаётся для пересланных сообщений. /// </summary> public long Mid { get { return this._mid; } private set { this._mid = value; } } /// <summary> /// Автор сообщения /// </summary> public long Uid { get { return this._uid; } private set { this._uid = value; } } /// <summary> /// Дата отправки сообщения. /// </summary> public DateTime Date { get { return unixTime.AddSeconds((double)this._date); } private set { this._date = (long)(value - unixTime).TotalSeconds; } } /// <summary> /// Статус прочтения сообщения (0 – не прочитано, 1 – прочитано) Не передаётся для пересланных сообщений. /// </summary> public int Read_state { get { return this._read_state; } private set { this._read_state = value; } } /// <summary> /// Тип сообщения (0 – полученное сообщение, 1 – отправленное сообщение). Не передаётся для пересланных сообщений. /// </summary> public int Out { get { return this._out; } private set { this._out = value; } } /// <summary> /// Заголовок сообщения или беседы. /// </summary> public string Title { get { return this._title; } private set { this._title = value; } } /// <summary> /// Текст сообщения. /// </summary> public string Body { get { return this._body; } private set { this._body = value; } } /// <summary> /// (только для групповых бесед) ID беседы. /// </summary> public int Chat_id { get { return this._chat_id; } private set { this._chat_id = value; } } /// <summary> /// (только для групповых бесед) ID последних участников беседы, разделённых запятыми, но не более 6. /// </summary> public int Chat_active { get { return this._chat_active; } private set { this._chat_active = value; } } /// <summary> /// (только для групповых бесед) количество участников в беседе. /// </summary> public int User_count { get { return this._users_count; } private set { this._users_count = value; } } /// <summary> /// (только для групповых бесед) ID создателя беседы. /// </summary> public int Admin_id { get { return this._admin_id; } private set { this._admin_id = value; } } #endregion } } Сохранение изображения из PictureBox в файл @rust 14.05.2012 17:35 Здравствуйте! Помогите пожалуйста организовать: 1) сохранение нарисованного в PictureBox в файл 2) загрузку изображения из файла в PictureBox 3) очистку PictureBox Рисование в PictureBox осуществляется этим кодом Спасибо! Ответ #1 @Aleksey Nemiro 14.05.2012 18:36 Добавил код в приведенный пример. См. прикрепленный файл. Помогите доделать программу @ctpax3 13.05.2012 19:01 Задачка: * Создайте перечисление из названий групп колледжа (например, RDIR21, RDIR22, RIDR23, RDDR21,...). * Создайте «зубчатый» массив, где элементы каждой строки содержат фамилии студентов, обучающихся в соответствующих группах. * Распечатайте фамилии студентов по каждой группе отдельно (создать функцию, где входным параметром является название группы или Все) * Распечатайте фамилии студентов по каждой группе (создать функцию, где входным параметром является перечисление групп — пользователь может ввести от 1 до … - params) * Найдите однофамильцев (функция). * Осуществите поиск по фамилии и по фрагменту фамилии (функции) * Программа должна содержать меню с выполненными пунктами задания То что смог наваять: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Practica_3 { class Program { public enum Grupp : int { RDIR21, RDIR22, RIDR23, RDDR21 }; public static string[][] student = new string[4][]{ new string[3]{"Ivanov","Petrov","Sidorov"}, new string[4]{"Galkin","Kirkorov","Petrosjan","Ivanov"}, new string[4]{"Barykin","Kuzmin","Petrov","Butusov"}, new string[3]{"Sharapova","Sidorov","Alsu"}}; public static void Print(string poisk) { int count = Enum.GetValues(typeof(Grupp)).Length; int nomer = (int)Enum.Parse(typeof(Grupp), poisk); Console.WriteLine("Gruppa {1} : {0}", nomer,poisk); //Console.WriteLine("Kol-vo grupp: " + count); { for (int j = 0; j < student[nomer].Length; j++) { Console.WriteLine(student[nomer][j]); } Console.ReadLine(); } } //ReadWrite=Read | Write; /* public static void AllStudGrup() { } public static void DoubleStud() { } public static void FamStud() { }*/ static void Main(string[] args) { string S = Console.ReadLine(); Program.Print(S); } /*{ int Menu; string S; do { Console.Clear(); Console.WriteLine(" "); Console.WriteLine(" Menuu:"); Console.WriteLine("1-> "); Console.WriteLine("2-> "); Console.WriteLine("3-> "); Console.WriteLine("4-> "); Console.WriteLine("5-> Vihod"); S = Console.ReadLine(); Menu = int.Parse(S); switch (Menu) {case 1: { break;} case 2: {Program.AllStudGrup(); break;} case 3: {Program.DoubleStud(); break;} case 4: {Program.FamStud(); break;} } } while (Menu != 5); } */ } } Графический редактор. Сохранить линии на panel @GreatTalker 11.05.2012 15:13 Привет.Я смог сделать рисование прямых при помощи
мыши,но при сворачивании окна все прямые исчезают,порывшись на форумах я нашел методы Invalidate() и refresh(),но при их использовании сразу нарисованная линия просто исчезает.Как сохранить линии на panel?Код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace GraphCreator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } List<Point> points = new List<Point>();//массив для хранения точек public int x1,y1;//начальные координаты прямой public int x2,y2;//конечные координаты прямой Pen p = new Pen(Color.Black, 2);//цвет пера с шириной 2 bool offon = false;//лог переменная для проверки начала рисования private void panel1_MouseEnter(object sender, EventArgs e)//мышь попадает в область панели { Cursor = Cursors.Cross;//курсор становится крестом } private void panel1_MouseDown(object sender, MouseEventArgs e)//нажатие кнопки мыши { x1 = e.X;//записываем кооодинату x при нажатии мыши y1 = e.Y;//записываем координату y при нажатии мыши offon = true;//подтверждаем что рисование началось } private void panel1_MouseMove(object sender, MouseEventArgs e)//перемещение мыши { } private void panel1_MouseUp(object sender, MouseEventArgs e) { Graphics g = panel1.CreateGraphics();//объявляем объект g для рисования x2 = e.X;// y2 = e.Y;// if (offon == true) g.DrawLine(p, x1, y1, x2, y2); offon = false; } } } Ответ #1 @EROS 12.05.2012 00:06 Ответ #2 @Shark1 12.05.2012 00:11 Тут где-то на форуме подобное было но на VB.Net. Вот тот-же код но на C#: using Microsoft.VisualBasic; using System.Windows.Forms; using System; using System.Collections.Generic; using System.Drawing; using System.Diagnostics; using System.Collections; public class Form1 { private List<Line> lines = new List<Line>(); //позиция рисования private Point start; private void Form1_Load(System.Object sender, System.EventArgs e) { this.PictureBox1.Image = new Bitmap(this.PictureBox1.Width, this.PictureBox1.Height); } private void PictureBox1_MouseDown(System.Object sender, System.Windows.Forms.MouseEventArgs e) { //запоминаем начальную точку this.start = e.Location; } private void PictureBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { //запоминаем точку где отпустили мышь Point end = e.Location; //создаем новую линию this.lines.Add(new Line(this.start, end)); Rectangle area = new Rectangle(Math.Min(this.start.X, end.X), Math.Min(this.start.Y, end.Y), Math.Abs(this.start.X - end.X), Math.Abs(this.start.Y - end.Y)); area.Inflate(1, 1); //обновляем PictureBox this.PictureBox1.Invalidate(area); this.PictureBox1.Update(); } private void PictureBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) { //рисуем линии this.DrawLines(e.Graphics); } //сохраняем твои линии private void Save() { using (Graphics g = Graphics.FromImage(this.PictureBox1.Image)) { this.DrawLines(g); } this.Clear(); } //очищаем PictureBox private void Clear() { this.lines.Clear(); this.PictureBox1.Refresh(); } //прорисовка линий private void DrawLines(Graphics g) { foreach (Line line in this.lines) { g.DrawLine(Pens.Black, line.Start, line.End); } } } public class Line { private Point _start; private Point _end; public Point Start { get { return this._start; } set { this._start = value; } } public Point End { get { return this._end; } set { this._end = value; } } public Line() : this(Point.Empty, Point.Empty) { } public Line(Point start, Point end) { this._start = start; this._end = end; } } Ответ #3 @GreatTalker 13.05.2012 10:39 Во втором примере мне практически ничего непонятно,решил сделать по примеру события paint из msdn-теперь линии вообще не рисуются...что я сделал не так?Код: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace GraphCreator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Point start, end; List<Point> points = new List<Point>();//массив для хранения точек private void Form1_Load(object sender, EventArgs e) { this.pictureBox1.Image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);//для чего это не знаю } private void pictureBox1_MouseDown(object sender, MouseEventArgs e)//при нажатии кнопки мыши { start = e.Location;//записываем начальные координаты } private void pictureBox1_MouseEnter(object sender, EventArgs e)//при попадании мыши на picturebox { Cursor = Cursors.Cross;//курсор становится крестом } private void Form1_MouseEnter(object sender, EventArgs e)//при попадании мыши на форму { Cursor = Cursors.Default;//курсор становится стандартным } private void pictureBox1_MouseUp(object sender, MouseEventArgs e)//при отпускании мыши { end = e.Location;//записываем конечные координаты pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);//подключаем событие Paint } private void pictureBox1_Paint(object sender, PaintEventArgs e)//событие рисования { Graphics g = e.Graphics;//создаём местную версию графического объекта для picturebox Pen p = new Pen(Color.Black, 2);//создаём перо g.DrawLine(p, start, end);//рисуем линию } } } Ответ #4 @GreatTalker 13.05.2012 11:11 Сделал с refresh в делегате mouse up.Теперь линия рисуется и остаётся,но предыдущая исчезает.Получается,линии нужно заносить в список чтобы они сохранялись и отрисовывать их заново? using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace GraphCreator { public partial class Form1 : Form { public Form1() { InitializeComponent(); } Point start, end; List<Point> points = new List<Point>();//массив для хранения точек private void Form1_Load(object sender, EventArgs e) { this.pictureBox1.Image = new Bitmap(this.pictureBox1.Width, this.pictureBox1.Height);//для чего это не знаю } private void pictureBox1_MouseDown(object sender, MouseEventArgs e)//при нажатии кнопки мыши { start = e.Location;//записываем начальные координаты } private void pictureBox1_MouseEnter(object sender, EventArgs e)//при попадании мыши на picturebox { Cursor = Cursors.Cross;//курсор становится крестом } private void Form1_MouseEnter(object sender, EventArgs e)//при попадании мыши на форму { Cursor = Cursors.Default;//курсор становится стандартным } private void pictureBox1_MouseUp(object sender, MouseEventArgs e)//при отпускании мыши { end = e.Location;//записываем конечные координаты pictureBox1.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);//подключаем событие Paint Refresh(); } private void pictureBox1_Paint(object sender, PaintEventArgs e)//событие рисования { Graphics g = e.Graphics;//создаём местную версию графического объекта для picturebox Pen p = new Pen(Color.Black, 2);//создаём перо g.DrawLine(p, start, end);//рисуем линию } } } Не могу понять как в модуле access2003 используется поле @vlad_mol 10.05.2012 07:59 Не могу понять как в модуле экономическая оценка используется поле scepka. при расчете идет ошибка if scepka="o" и предлагает уйти на отладку.файл прилагаю. Исходные кодыWPF 3D ContentVisual Basic .NET: Графика @Shark1 15.05.2012 01:31 Пример размещения 2D контента на 3D поверхности. На примере 3D видео-плеера. Колесом мыши масштабируем, клавишами клавиатуры(Left & Right) поворачиваем окно по оси Y. К данном исходному коду прилагаются файлы примеров. Скачать. Маленький пример по работе с BrushesVisual Basic .NET: Графика @Shark1 11.05.2012 04:46 Собственно ничего нового: В одном варианте кисти грузятся в список(System Brushes) - используются привязки к списку, в другом варианте можно настроить кисть самому. К данном исходному коду прилагаются файлы примеров. Скачать. Вакансии в ITWeb дизайнерРоссия, Нижний Новгород | Работа
в офисе | 20 000.00 KBP SEO оптимизаторРоссия, Нижний Новгород | Работа в офисе | 25 000.00 KBP Программист, веб-мастерРоссия, Чебоксары | Работа в офисе | 22 000.00
KBP Web-программист PythonРоссия, Ростов-на-Дону | Работа в офисе Веб-программистРоссия, Ростов-на-Дону | Работа в офисе | 45 000.00 KBP Веб-программист, PHP программистРоссия, Ростов-на-Дону | Работа в офисе | 35 000.00 KBP SEO оптимизаторРоссия, Нижний Новгород | Работа в офисе SEO оптимизаторРоссия, Нижний Новгород | Работа в офисе SEO специалистРоссия, Чебоксары | Работа в офисе | 15 000.00 KBP Программист C#Россия,
Красноярск | Работа в офисе | 30 000.00 KBP Все вакансии в IT · Новости мира ITВ Японии создан беспроводной чип, передающий данные на скорости 1,5 Гбит/секЯпонский производитель полупроводников Rohm сегодня сообщил о совместном проекте со специалистами из Университета Осаки над прототипом нового чипа, способного передавать рекордные 1,5 гигабита данных в секунду при помощи всего одного радиоканала. Правда, работает новый японский чип в довольно сложном для использования терагерцевом микроволновом радиодиапазоне.
Терагерцевый диапазон представляет собой диапазон радиоволн с частотой от 100 гигагерц до 10 терагерц. Японские эксперты говорят, что создание радиопередающих устройств в терагерцевом диапазоне имеет свои плюсы и минусы. К первым относится возможность создания очень производительных устройств связи, работающих в десятки раз быстрее, чем современные сети WiFi или LTE. Однако оборотной стороной этих преимуществ является небольшая длина распространения таких волн, поэтому создать передатчики, которые будут работать
на расстоянии километров друг от друга здесь почти невозможно. 17.05.2012 13:37 · Категория: Железо · Источник: CyberSecurity.ru Новый сетевой червь заражает RAR-архивыВ сети зафиксировано широкое распространение новой вредоносной программы-червя Win32.HLLW.Autoruner.64548, способной заражать RAR-архивы. Червь «умеет» загружать с удаленного сервера злоумышленников исполняемые файлы, которые могут нести вредоносный функционал.
Как сообщили в антивирусной компании "Доктор Веб", вредоносная программа Win32.HLLW.Autoruner.64548 распространяется так же, как и многие другие черви: создает свою копию на диске и размещает в корневой папке файл autorun.inf, запускающий червя при подключении устройства. Начав свою работу на инфицированном компьютере, Win32.HLLW.Autoruner.64548 ищет на дисках RAR-архивы и записывает себя в них, используя одно из следующих имен: secret.exe, AVIRA_License.exe, Warcraft_money.exe, CS16.exe, Update.exe,
private.exe, Autoruns.exe, Tutorial.exe, Autorun.exe, Readme.exe, Real.exe, readme.exe, Keygen.exe, Avast_keygen.exe. В некоторых случаях после подобной модификации архивы повреждаются. 16.05.2012 10:46 · Категория: Безопасность · Источник: CyberSecurity.ru Обновление для антивируса заблокировало работу компьютеровПлатные версии антивируса Avira после очередного обновления начали принимать за вирусы программы из пакета Office, браузер Opera и системные процессы Windows. В ряде случаев это сделало невозможной нормальную работу на компьютере. Разработчики Avira признали ошибку и выпустили "заплатку". 16.05.2012 10:45 · Категория: Безопасность · Источник: Lenta.ru
Подпишитесь на тематические RSS-ленты Kbyte.Ru, чтобы быть в курсе последних новостей: Основная лента · Форумы (темы и сообщения) · Visual Basic 5.0/6.0 · Visual Basic .NET · C# (Си шарп) · Delphi · JavaScript · ActionScript · ASP .NET · ASP .NET MVC Ищите Kbyte.Ru в социальных сетях FaceBook, ВКонтакте, Twitter. Если вы занимаетесь программированием, то наверняка вам пригодятся хитрые инструменты. Международный портал для программистов и разработчиков Kbyte.Ru основан в 2006 году. Целью портала является объединение программистов и специалистов IT-бизнеса, студентов и преподавателей для обмена опытом и знаниями, оказания помощи во всех делах и начинаниях в области IT. |
В избранное | ||