![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
Wardena |
|
|||
![]() Пуфыфтик =) Профиль Группа: Участник Сообщений: 16 Регистрация: 13.9.2006 Где: Уфа Репутация: нет Всего: нет |
Привет, Ребята, разбираюсь тут с шарпом и натолкнулась на следующие проблемы:
1) рисую на PictureBox но не могу сделать так что картинка выводилась сразу при старте программы, пробовала писать в событии формы Load, но ничего не вышло, вобщем долго мучала, скажите где прописывать надо плиз. 2) рисую используя класс Graphics: Graphics grfx = Picturebox.CreateGraphics(); grfx.Clear(Color.Black); ................ там дальше все прописано как и что рисовать, но у меня программка связана с анимацией, то есть происходит вызов этой процедуры и каждый раз картинка перерисовывается, всявязи с этим появляется вопрос о том как убрать мерцание, пробовала создавать массив типо PictureBox[] pages = new PictureBox[2]; и в цикле писать так Picturebox = pages[page]; где page меняется от 0 до 1 при каждой перерисовке, получаю пустой экран... скажите плиз как надо... 3) скажем имею нарисованую картинку, нажимаю Alt+TAB то есть перевожу на рдугое окно, потом созваращаюсь в окно с программой и там все стерлатЬ, я дельфи я использовала событие OnPaint а тут событие Paint вообще непонятно как работает... вот... Help Me Plz ![]() |
|||
|
||||
reloni |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 112 Регистрация: 10.5.2006 Где: Москва Репутация: 3 Всего: 4 |
Переопределить функцию OnPaint нужно так:
В него впихивать уже всю перерисовку формы. |
|||
|
||||
Wardena |
|
|||
![]() Пуфыфтик =) Профиль Группа: Участник Сообщений: 16 Регистрация: 13.9.2006 Где: Уфа Репутация: нет Всего: нет |
так все, остается вопрос только с мерцанием =)
Это сообщение отредактировал(а) Wardena - 13.9.2006, 22:36 |
|||
|
||||
stab |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
Простейший вариант: создать свой контрол на основе PictureBox и выставить у него DoubleBuffered в true. Двойная буферизация как раз таки избавляет от мерцания, но замедляет перерисовку и увеличивает расход памяти, т.к. сначала рисуется в оффскрин битмап, а уже потом этот битмап рисуется на контроле.
В принципе, чтобы ты не придумал, схема работы мало будет отличаться от уже реализованной в фреймворке двойной буферизации. Так что, юс ит энд энджой. ![]() -------------------- 6, 6, 6 - the number of the beast. |
|||
|
||||
Wardena |
|
|||
![]() Пуфыфтик =) Профиль Группа: Участник Сообщений: 16 Регистрация: 13.9.2006 Где: Уфа Репутация: нет Всего: нет |
в начале написала:
public class MyPictureBox : PictureBox { public MyPictureBox() { DoubleBuffered = true; } } затем this.Picturebox = new System.Windows.Forms.PictureBox(); заменила на this.Picturebox = new MyPictureBox(); дальше ничего не меняла в коде программы и мерцание не исчезло, что-то в коде самом надо прописывать чтоли, както настраивать что-то, чередовать буфферы, или это все автомарически? МСДН про этот дабл буффер говорит что это какаято новая финча дот нет фреймворка 2, объясните плиз в кратце что не так... |
|||
|
||||
stab |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1839 Регистрация: 1.1.2003 Репутация: 22 Всего: 48 |
вот пример:
попробуй его запустить с DoubleBuffered = true и DoubleBuffered = false, разницу сразу заметишь.
достаточно повесить обработчик на событие Paint. -------------------- 6, 6, 6 - the number of the beast. |
||||
|
|||||
Naum |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 743 Регистрация: 7.9.2005 Где: Саратов, ул. Поса дского, 298 Репутация: 8 Всего: 15 |
Не знаю у меня 1 Framework и 2003 студия. и все время работала, если например рисую на форме, то все время пишу в OnLoad'е (только это VB)
Насчет SetStyle можно посмотреть здесь. Добавлено @ 09:37 То есть у тебя по идее должно исчезнуть мерцание после
-------------------- У нас всего два праздника Новый год и ТЯПница. |
||||||
|
|||||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Для второго фреймворка работает этот код:
-------------------- ![]() |
|||
|
||||
Wardena |
|
|||
![]() Пуфыфтик =) Профиль Группа: Участник Сообщений: 16 Регистрация: 13.9.2006 Где: Уфа Репутация: нет Всего: нет |
Все спасибо ребят огромное, дабл буфер заработал, разобралась =) сори что долго не отвечала просто другие дела были, а щас возвращаюсь в КГ) буду дальше дерзать, если какие вопросы еще возникнут тута отпишу, всем респект =)
|
|||
|
||||
HUJG |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 10.1.2006 Репутация: нет Всего: нет |
Сорри что поднимаю старую тему.
Кто нибудь писал графику для КПК .NET Compact Framework 2.0? Там по каким то причинам у формы нет метода SetStyle. Как в этом случае организовать буферизацию? Это сообщение отредактировал(а) HUJG - 6.7.2007, 11:38 |
|||
|
||||
MiBBiM |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 11.7.2009 Репутация: нет Всего: нет |
+1
|
|||
|
||||
OrionRussia |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 19.8.2010 Репутация: нет Всего: нет |
Я сделал по образцу программку, на форме движется объект(возможно НЛО), при достижении границы он повторно вылетает из той же стороны. Как сделать так, чтобы он менял направление движения при достижении границы? Долетел до границы, развернулся, обратно полетел.
|
|||
|
||||
CYBERDREAM |
|
|||
![]() I think, there4 I am ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1096 Регистрация: 31.10.2006 Где: CyberLand Репутация: 11 Всего: 28 |
Шаг смещения меня на отрицательный, и потом обратно, ну и т.д.
-------------------- Ищем .Net, Java, Javascript разработчиков, Кипр, Лимассол. (знание английского необязательно) Telegram, skype: kuchuk.artiom |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |