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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сохранение нарисованного рисунка 
:(
    Опции темы
Naum
Дата 19.3.2007, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Правильнее будет вот так:
Код

this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
this.SetStyle( ControlStyles.DoubleBuffer, true);
this.SetStyle( ControlStyles.UserPaint, true);

Вот только беда - перерисовывается-то панель, а не форма. Поэтому от этого будет мало толка.
ИМХО, лучше написать наследник панели и его добавить на форму.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
agl
Дата 19.3.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А что даст наследник панели? Может лучше наследник формы?
PM   Вверх
Naum
Дата 19.3.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(agl @  19.3.2007,  12:13 Найти цитируемый пост)
Может лучше наследник формы?

Так твоя форма итак уже есть наследник System.Windows.Forms.Form smile
Цитата(agl @  19.3.2007,  12:13 Найти цитируемый пост)
А что даст наследник панели?

В наследнике можно ничего не переписывать только в конструктор добавить строки
Код

this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
this.SetStyle( ControlStyles.DoubleBuffer, true);
this.SetStyle( ControlStyles.UserPaint, true);

тогда от них будет больший эфект.
Эти строки устанавливают стиль прорисовки данного контрола.
Если их добавить на форму (точнее, как уже выяснилось наследник формы) то они точно ускорят прорисовку самой формы, но не факт, что ускорят прорисовку контролов на форме.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
agl
Дата 19.3.2007, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А код написать можно  smile , а то я туплю - опыта не хватает  smile 
PM   Вверх
Naum
Дата 19.3.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Код

using System;
using System.Windows.Forms;

namespace WindowsApplication1
{
    public class MyPanel:Panel
    {
        public MyPanel()
        {
            this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
            this.SetStyle( ControlStyles.DoubleBuffer, true);
            this.SetStyle( ControlStyles.UserPaint, true);
        }
    }
}

Дальше кидаешь этот контрол на форму. И делаешь с ним все то же самое что и с обычной панелью.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
agl
Дата 19.3.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



2Naum
Всё получилось, огромноё спасибо! Если не трудно, объясни пожалуйста, почему у наследника класса Панель есть свойства(SetStyle), которых нет у самого класса Панель?
PM   Вверх
Naum
Дата 19.3.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



О, батенька, так это вам надо RTFM. И мне тоже, наверное.

Есть такое понятие как уровень доступа членов класса. (Объясняльщик из меня не очень, так что если не понятно - спрашивай).
Обычно выделяют пять уровней (по крайней мере в C#)

1. public - Доступ не ограничен.
2. protected - Доступ ограничен содержащим классом и классами наследниками от этого класса (именно поэтому метод SetStyle класса Control виден только в классах наследниках).
3. internal - Доступ ограничен содержащей класс сборкой.
4. protected internal - Доступ ограничен содержащей сборкой и классами наследниками.
5. private - Доступ ограничен содержащим классом.


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
agl
Дата 19.3.2007, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо за объяснение   smile , в общем понятно, видимо член SetStyle protected или protected internal, только непонятно на кой такии сложности. ИМХО, такии члены скрывать ненужно, хотя возможно моё мнение от нехватки знаний. Ещё раз спасибо  smile 
PM   Вверх
Xonxt
Дата 19.3.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 24.1.2006
Где: Украина / Одесса

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



щас попробуем...

*****

Ребят! Всем спасибо! Изображение нифига не дрожит! smile  smile 

Я думал как-то сделать двойную буферизацию для панели, но не догадался переписать конструктор по-умолчанию. Спасибо ) 

+1 шаг к завершению курсовой.  smile 

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


Шустрый
*


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

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



Не дрожит smile Naum'у спасибо, и всем остальным    smile  

2Xonxt
У меня ещё вопросик, почему в твоей проге сохранение не происходит? Теоритически, сохранение в событии panel1_MouseUp, а практически, при запуске твоей проги ничего не сохраняется :(, у меня по крайней мере, почему?  
PM   Вверх
Naum
Дата 20.3.2007, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



agl,  насчет сохранения... А у тебя метод panel1_MouseUp точно подписан на событие panel1.MouseUp?
smile 
Цитата(agl @  19.3.2007,  19:58 Найти цитируемый пост)
видимо член SetStyle protected или protected internal,

protected. Если бы было protected internal, то из твоего проекта (который по сути является уже другой сборкой) этот метод не был бы виден.

Это сообщение отредактировал(а) Naum - 20.3.2007, 13:29


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
Idsa
Дата 21.3.2007, 04:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Naum @  20.3.2007,  13:22 Найти цитируемый пост)
protected. Если бы было protected internal, то из твоего проекта (который по сути является уже другой сборкой) этот метод не был бы виден.

Что-то я мысль не уловил :(. protected internal же "шире" protected. Значит, как я понимаю, в данном случае для пользователей панели нет разницы, protected или protected internal объявлен SetStyle: эффект один и тот же.


Цитата(agl @  19.3.2007,  18:58 Найти цитируемый пост)
ИМХО, такии члены скрывать ненужно

Вот мне тоже так кажется. Подскажите все-таки, чем вызвано запротекчивание smile SetStyle.


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
agl
Дата 21.3.2007, 09:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Naum @ 20.3.2007,  13:22)
agl,  насчет сохранения... А у тебя метод panel1_MouseUp точно подписан на событие panel1.MouseUp?

Точно. Она даже сохраняется в виде чёрного квадрата.

Это сообщение отредактировал(а) agl - 21.3.2007, 09:35

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  _MyPanel.rar 21,02 Kb
PM   Вверх
Naum
Дата 21.3.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 743
Регистрация: 7.9.2005
Где: Саратов, ул. Поса дского, 298

Репутация: 8
Всего: 15



Цитата(Idsa @  21.3.2007,  05:44 Найти цитируемый пост)
 protected internal же "шире" protected.

Тьфу ты блин, сам запутался. Точно. protected internal "шире".
agl, Странно. В твоем проекте ничего не менял. Все сохраняет.

З.Ы. Верните старые смайлы.  smile 


--------------------
У нас всего два праздника Новый год и ТЯПница.
PM MAIL ICQ   Вверх
agl
Дата 21.3.2007, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Naum)
agl, Странно. В твоем проекте ничего не менял. Все сохраняет.

Очень странно ((, прикрепляю рисунок, который у меня сохраняется в
bin\Debug\img.bmp

Добавлено @ 11:20 
 smile 
В моем компе рисунок отображается как черный квадрат(смотрела и в Paint и в viewer'е, непонимаю в чём дело. А на форуме рисунок отображается

Это сообщение отредактировал(а) agl - 21.3.2007, 11:21

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  img.bmp 4,75 Kb
PM   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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