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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.08.2011, 19:02   #1
Mehanizator
Пользователь
 
Регистрация: 11.08.2011
Сообщений: 24
По умолчанию Замена двух прямоугольников

В моей программе нужно реализовать замену двух выбранных пользователем прямоугольников (всего прямоугольников 9 и из них нужно сложить трехцветный флаг). У меня не получается сделать перерисовку двух прямоугольников. Вместо этого перерисовываются все 9. Посоветуйте, что можно сделать.Вот часть кода, где собственно и должна происходить замена и функция OnPaint, которая рисует 9 прямоугольников, перемешивает их и раскрашивает:
Код:
void fun (koordinata * arr, int n)
{ for (int i=0; i<n ;i++) {
koordinata temp;
temp.y01=arr[i].y01;
int t=rand()%n;
arr[i].y01=arr[t].y01;
arr[t].y01=temp.y01;
}
}
//функция замены 2ух полосок
void happy(koordinata *massiv, int p1, int p2){koordinata buf;
	  buf.y01=massiv[p1].y01;
	  massiv[p1].y01=massiv[p2].y01;
	  massiv[p2].y01=buf.y01;
}

void OnButtonDown(HWND hwnd,UINT message,short x, short y, WPARAM wParam){
	for(t=0; t<n; t++){
	if(x>massiv[t].x1 && x<massiv[t].x2 && y>massiv[t].y2 && y<massiv[t].y01){
p1=t;
x=0;
y=0;
}}
	}
void OnButtonUp(HWND hwnd,short x, short y, WPARAM wParam){
	PAINTSTRUCT ps;
	for(t=0; t<n; t++){
	if(x>massiv[t].x1 && x<massiv[t].x2 && y>massiv[t].y2 && y<massiv[t].y01){
p2=t;
happy(massiv, p1, p2);
x=0; y=0;

	ps.rcPaint.left=massiv[t].x1;
	ps.rcPaint.top=massiv[t].y01;
	ps.rcPaint.right=massiv[t].x2;
	ps.rcPaint.bottom=massiv[t].y2;
	InvalidateRect(hwnd,&ps.rcPaint,TRUE);}}
	}
void OnPaint(HWND hwnd) {
	 PAINTSTRUCT ps;
	 HDC hdc=BeginPaint(hwnd,&ps);

	 	 char szText2[]="*Если данное расположение линий не нравится, нажмите еще раз на флаг той же страны."; //Надпись
	 		 	SetBkMode (hdc,TRANSPARENT); //Прозрачный фон под текстом
	 		 	SetTextColor(hdc,RGB(0,0,0));
	 		 	TextOut(hdc,100,500,szText2,strlen(szText2));
	SelectPen(hdc,hBlackPen);//Выберем в контекст новое перо
//2
fun(massiv, n);
		for(t=(n-6); t<(n-3); t++){
				SelectBrush(hdc,cv1);
			Rectangle(hdc, 100,massiv[t].y01, 600, massiv[t].y01-40);}
	//1
	for(t=0; t<(n-6); t++){
			SelectBrush(hdc,cv2);
		Rectangle(hdc, 100,massiv[t].y01, 600, massiv[t].y01-40);}
	//3
	for(t=(n-3); t<n; t++){
		SelectBrush(hdc,cv3);
	Rectangle(hdc, 100,massiv[t].y01, 600, massiv[t].y01-40);}

//---------------------------------------------------------------

}
Mehanizator вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
найти пересечение двух прямоугольников заданных координатами двух углов Этотак Помощь студентам 0 11.05.2011 23:55
Сравнение и замена значений в двух таблицах Excel shalinoleg Microsoft Office Excel 2 10.06.2010 09:53
Площадь прямоугольников savraska Помощь студентам 7 04.06.2010 16:42
Замена кода программы с Delhi5 на Delhi7 либо замена базы данных с Acessa на MySQL DorianLeroy Фриланс 8 18.02.2009 18:52
5 прямоугольников Carbon Помощь студентам 10 08.11.2007 10:08