Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Разработка графического редактора, Простой графический редактор 
:(
    Опции темы
EgoBrain
Дата 23.3.2008, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Здравствуйте. Я разрабатываю простой графический редактор. Всё рисование на форме осуществляется в событиях MouseDown, MouseMove, MouseUp. Естественно после перерисовки формы изображение пропадает.  :dash1 

Переделывать всё под событие OnPaint лень, много переделывать придётся, плюс я незнаю стандартной технологии рисования по OnPaint. Была идея сбрасывать уже нарисованное в битовую карту каждый раз, и каждый раз заново воспроизводить, как это реализовать, или может есть другие подходы без глобальных переделок кода?  Времени слишком мала, в мае сдача дипломки, тема связанная с графикой в .NET :wacko 
PM MAIL ICQ Skype   Вверх
0lmer
Дата 23.3.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 3.12.2006

Репутация: нет
Всего: -1



Посмотри в MSDN на тему GDI.
Мож чего найдешь хорошего.
PM   Вверх
vponomarov
Дата 23.3.2008, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



EgoBrain, вот чувак тем же занимался. говорит, что я ему помог, все заработало smile 
http://forum.vingrad.ru/forum/topic-201830...t-redactor.html


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
EgoBrain
Дата 24.3.2008, 07:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Хмм... Вариант сбрасывания в файл я не рассматривал, всё время мучился вопросом как сохранять битовую карту в памяти и загружать её в рисуемую область. Это реально? Хотя можно попробывать и с файлом... Блин, опять гемор в итоге...  smile 

Тьфу блин, всё вижу, здесь не через файл идёт работа, а в памяти... Но всё равно никак до ума довести не могу, получается сделать чтоб рисунок не пропадал, но не видно самого процесса рисования (нарисованное появляется только после перерисовки формы). В общем не мог бы ты ещё раз всё по-порядку объяснить что и как, и не просто код привести, а в научно публицистическом стиле рассказать smile ведь толку нету копировать чужой код.

А вот, всё, получилось, неужели smile Просто у меня там инструментов несколько уже было, поэтому переделывать немножко пришлось. Самое главное набраться моральных сил чтобы что-то сделать smile Теперь осталось работу с битовой картой из файла переделать под pictureBox (у меня всё рисование до этого было по Form).

Да, кстати, впервые вижу чтоб объявляли экземпляры классов здесь:
Код

public Form4()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
            pictureBox1.Image=new Bitmap(pictureBox1.Width,pictureBox1.Height);
            Graphics myGraphix=Graphics.FromImage(pictureBox1.Image);
            myGraphix.Clear(Color.White);
            
        }
 

Это сообщение отредактировал(а) EgoBrain - 24.3.2008, 10:28
PM MAIL ICQ Skype   Вверх
vponomarov
Дата 24.3.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



Цитата

Да, кстати, впервые вижу чтоб объявляли экземпляры классов здесь:

а что в этом такого?
и кстати, если ты имеешь в виду pictureBox1.Image=new Bitmap(pictureBox1.Width,pictureBox1.Height); - то это инициализация. где же ее делать как не в конструкторе? smile 
а если Graphics myGraphix=... , то это просто вспомогательный объект, чтобы залить картинку. опять же не вижу ничего противоестественного smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
EgoBrain
Дата 24.3.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Новая проблема: размеры битовой карты, по которой происходит рисование, не совпадают с размерами клиентской области pictureBox, причём возникает это абсолютно по непонятным причинам и поразному (бывает просто нижнюю часть отрезает, а бывает нижнюю и правую). Кто-нибудь сталкивался? 
PM MAIL ICQ Skype   Вверх
Dennnis
Дата 24.3.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 23.3.2008

Репутация: нет
Всего: 4



Так же используй двойную буферизацию. Ты рисуешь на невидимой Graphics, а затем просто попируешь содержимое в графикс формы
Код

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {

        private BufferedGraphicsContext context;
        private BufferedGraphics buffer;
        private Graphics graphics;


        public Form1()
        {
            InitializeComponent();

            context = BufferedGraphicsManager.Current;
            Rectangle rect = new Rectangle(0, 0, this.Width, this.Height);
            buffer = context.Allocate(this.CreateGraphics(), rect);
            graphics = buffer.Graphics;
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);

        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            buffer.Render(e.Graphics);
        }

        private void Form1_DoubleClick(object sender, EventArgs e)
        {
            //Резуем в graphics что угодно
            graphics.DrawRectangle(Pens.Red, 10, 10, 100, 100);
            //Перерисовывает форму
            this.Refresh();
        }
    }
}


--------------------
Get Rich or Die Tryin'
PM   Вверх
EgoBrain
Дата 25.3.2008, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Что за пространства имён System.Collections.Generic и System.Linq. Какую версию Framework юзаешь? У меня в системе нет таких пространств о_О.
WinXP SP2, .NET Framework 1.1. Походу 2.0 нуна?  smile  
PM MAIL ICQ Skype   Вверх
QryStaL
Дата 25.3.2008, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



System.Collections.Generic из 2.0
System.Linq из 3.5

2.0 очень желательно, есть довольно существенные отличия от 1.1


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
EgoBrain
Дата 21.4.2008, 03:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 23.3.2008
Где: Комната

Репутация: нет
Всего: 2



Немогу найти информацию по вопросу: как осуществить в C# заливку области обозначенной одним цветом, тобишь как это реализовано в MS Paint.  smile 
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.