Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2009, 20:01   #1
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
Вопрос Графика с++

фишка гифовская медленно прорисовывается, подгружая процессор на 100%(без фона)
как решить данную вопрос...(где-то слышал про двойную буферизацию с чем это идет и подойдет ли мне?)
вот кодинг:
Код:
#pragma endregion
		private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
			 flag_x=-1;
			 }
	private: System::Void pictureBox2_MouseDown(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
				 flag_x=this->MousePosition.X-this->Left-pictureBox2->Left;
				 flag_y=this->MousePosition.Y-this->Top-pictureBox2->Top;
				 
			 }
	private: System::Void pictureBox2_MouseUp(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
				 String ^ss;
				 glob_x=this->MousePosition.X-this->Left-e->X;
				 glob_y=this->MousePosition.Y-this->Top-e->Y;
				 ss=(this->MousePosition.X-this->Left-e->X).ToString();
				 this->textBox1->AppendText("x = "+ss+"   ");
				 ss=(this->MousePosition.Y-this->Top-e->Y).ToString();
				 this->textBox1->AppendText("y = "+ss+"\n");
				 flag_x=-1;
				 /*if((glob_y>205)&&(glob_y<370)&&(glob_x>290)&&(glob_x<435))
				 {
					 pictureBox2->Left=366;pictureBox2->Top=280;
				 }
				 */
			 }
	private: System::Void pictureBox2_MouseMove(System::Object^  sender, System::Windows::Forms::MouseEventArgs^  e) {
			 if (flag_x!=-1)
			 {

					pictureBox2->Left=this->MousePosition.X-this->Left-flag_x;
					pictureBox2->Top=this->MousePosition.Y-this->Top-flag_y;
				 
			 }
			 }

};
}
картинки фишка- gif
фон - png
в приложении .ехе без 3.5 фармволка не пойдет
ЗЫ на мощных процессорах возможно лагов не будет
Вложения
Тип файла: rar ruletka_0.rar (364.8 Кб, 14 просмотров)
dampirik вне форума Ответить с цитированием
Старый 18.10.2009, 22:25   #2
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

хмм, что значит мощных процах? у меня проц вроде уже не новый совсем(C2D E6750@3ггц), прога грузит 3-5% при активных перемещениях фишки
мб глюк где-то в твоей системе, а с кодом все нормально и так?
m0nax вне форума Ответить с цитированием
Старый 19.10.2009, 00:40   #3
dampirik
Форумчанин
 
Регистрация: 02.07.2009
Сообщений: 722
По умолчанию

Я спецально убиваю процесор(вертуализацией) чтобы глюков небыло, на 800МГц - 100% и лагает...
на 1.6 ГГц уже так се...))
а на трех ядерном атлоне вообще нормуль)) но это не правильно для такой ерунды столько отдавать.... %-)
dampirik вне форума Ответить с цитированием
Старый 19.10.2009, 01:43   #4
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

У меня не фурычит...
Говорит, мол, "Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему."...

Цитата:
без 3.5 фармволка не пойдет
Хм... Это что за чудо и для чего оно?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 19.10.2009, 01:57   #5
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Цитата:
Сообщение от DomiNick Посмотреть сообщение
У меня не фурычит...
Говорит, мол, "Приложение не было запущено, поскольку оно некорректно настроено. Повторная установка приложения может решить данную проблему."...


Хм... Это что за чудо и для чего оно?
Вероятно имелся ввиду .NET Framework 3.5)
2dampirik,
У меня работает без тормозов(коре два дуо 2.6).
По поводу двойной буферизации, суть в том, чтобы формировать изображение в памяти, а потом побитовым копированием перенести его на контекст устройства, правда как сделать это в CLR не знаю. Вот пример на WinAPI:
Код:
HBITMAP hBmp = LoadBitmap(hInstance, MAKEINTRESOURCE(IDB_IMAGE));
...

case WM_PAINT:
	{
		PAINTSTRUCT ps;
		HDC hdc = BeginPaint(hWnd, &ps);
		HDC hBufDC = CreateCompatibleDC(hdc); // создаём совместимый контекст в памяти

		SelectObject(hBufDC, hBmp); // Формируем на нём изображение
		BitBlt(hdc, 0, 0, 654, 484, hBufDC, 0, 0, SRCCOPY); // Копируем сформированное изображение на контекст окна(прорисовываем)
		DeleteDC(hBufDC); // удаляем совместимый контекст в памяти
		EndPaint(hWnd, &ps);
	};break;
netrino вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика** Lenivec** Паскаль, Turbo Pascal, PascalABC.NET 2 28.04.2010 23:41
графика jenja Общие вопросы C/C++ 0 25.05.2009 11:28
Графика Машенька Паскаль, Turbo Pascal, PascalABC.NET 2 19.04.2009 17:38
графика MariyaVo Помощь студентам 3 06.04.2009 19:37