Змінюй хід війни! Допомагай ЗСУ!

-

🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
Статус: Offline
Реєстрація: 29.01.2009
Повідом.: 26
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #1
--
 
Останнє редагування:
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #2
желательно функцию из винапи, хотя я вообще не очень разбираюсь.
"А ну, предъяви подорожную! - Хамье! - стеклянным голосом произнес Румата. - Вы же неграмотны, зачем вам подорожная?" (с)
Так вот, зачем тебе выньапи?;)
for (int i=0; i<sizex; i++)
for (int j=0; j<sizey; j++)
newimage[j] = oldimage[j];
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #3
Я что то непонял наверно, вот у меня есть такая загрузка картинки:
case WM_PAINT:
hdc = BeginPaint(hWnd, &ps);
hBitmap = LoadImage(NULL, "Challenger.bmp", IMAGE_BITMAP,0,0, LR_LOADFROMFILE);
GetObject(hBitmap, sizeof(BITMAP), &Bitmap);
hCompatibleDC = CreateCompatibleDC(hdc);
hOldBitmap = SelectObject(hCompatibleDC, hBitmap);
GetClientRect(hWnd, &rect);
StretchBlt(hdc, 0,0, 640, 480, hCompatibleDC, 0, 0, Bitmap.bmWidth,
Bitmap.bmHeight, SRCCOPY);
SelectObject(hCompatibleDC, hOldBitmap);
DeleteObject(hBitmap);
DeleteDC(hCompatibleDC);
EndPaint(hWnd, &ps);
break;
покажи если не трудно как после того как я выведу картинку её перевернуть.
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #4
Код:
HBITMAP GetRotatedBitmapNT( HBITMAP hBitmap, float radians, COLORREF clrBack )
{
	// Create a memory DC compatible with the display
	CDC sourceDC, destDC;
	sourceDC.CreateCompatibleDC( NULL );
	destDC.CreateCompatibleDC( NULL );

	// Get logical coordinates
	BITMAP bm;
	::GetObject( hBitmap, sizeof( bm ), &bm );

	float cosine = (float)cos(radians);
	float sine = (float)sin(radians);

	// Compute dimensions of the resulting bitmap
	// First get the coordinates of the 3 corners other than origin
	int x1 = (int)(bm.bmHeight * sine);
	int y1 = (int)(bm.bmHeight * cosine);
	int x2 = (int)(bm.bmWidth * cosine + bm.bmHeight * sine);
	int y2 = (int)(bm.bmHeight * cosine - bm.bmWidth * sine);
	int x3 = (int)(bm.bmWidth * cosine);
	int y3 = (int)(-bm.bmWidth * sine);

	int minx = min(0,min(x1, min(x2,x3)));
	int miny = min(0,min(y1, min(y2,y3)));
	int maxx = max(0,max(x1, max(x2,x3)));
	int maxy = max(0,max(y1, max(y2,y3)));

	int w = maxx - minx;
	int h = maxy - miny;

	// Create a bitmap to hold the result
	HBITMAP hbmResult = ::CreateCompatibleBitmap(CClientDC(NULL), w, h);

	HBITMAP hbmOldSource = (HBITMAP)::SelectObject( sourceDC.m_hDC, hBitmap );
	HBITMAP hbmOldDest = (HBITMAP)::SelectObject( destDC.m_hDC, hbmResult );

	// Draw the background color before we change mapping mode
	HBRUSH hbrBack = CreateSolidBrush( clrBack );
	HBRUSH hbrOld = (HBRUSH)::SelectObject( destDC.m_hDC, hbrBack );
	destDC.PatBlt( 0, 0, w, h, PATCOPY );
	::DeleteObject( ::SelectObject( destDC.m_hDC, hbrOld ) );

	// We will use world transform to rotate the bitmap
	SetGraphicsMode(destDC.m_hDC, GM_ADVANCED);
	XFORM xform;
	xform.eM11 = cosine;
	xform.eM12 = -sine;
	xform.eM21 = sine;
	xform.eM22 = cosine;
	xform.eDx = (float)-minx;
	xform.eDy = (float)-miny;

	SetWorldTransform( destDC.m_hDC, &xform );

	// Now do the actual rotating - a pixel at a time
	destDC.BitBlt(0,0,bm.bmWidth, bm.bmHeight, &sourceDC, 0, 0, SRCCOPY );

	// Restore DCs
	::SelectObject( sourceDC.m_hDC, hbmOldSource );
	::SelectObject( destDC.m_hDC, hbmOldDest );

	return hbmResult;
}

Так вот, зачем тебе выньапи?;)

я очень сомневаюсь что перебор пикселов будет быстрее чем задание матрицы трансформации. Одно дело байты туда-сюда совковать, и совсем другое дело дать информацию видеоакселератору какую матрицу трансформации использовать при отрисовке текстуры... ;)
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #5
я очень сомневаюсь что перебор пикселов будет быстрее чем задание матрицы трансформации. Одно дело байты туда-сюда совковать, и совсем другое дело дать информацию видеоакселератору какую матрицу трансформации использовать при отрисовке текстуры... ;)
С одним я уже посостязался в умении писать алгоритмы, могу с тобой :)
А если серьезно - ты действительно считаешь, что человеку, который явно чайник, будет легко и понятно запрограммировать матрицу трансформации а не сделать как я написал? Ты еще предложи ему заюзать библиотечку CUDA для максимальной эффективности :D
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #6
Спасибо за ответы
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #7
Вообщето для спасибо, есть кнопочка (слева под аватаром, с иконкой весов) ;)
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #8
Ты еще предложи ему заюзать библиотечку CUDA для максимальной эффективности :D

а что, CUDA все таки интереснее, чем пиксели гонять. прийдется заодно для ATI написать, ну и для остальных все таки погонять пиксели. сложновато получилось :D

"А ну, предъяви подорожную! - Хамье! - стеклянным голосом произнес Румата. - Вы же неграмотны, зачем вам подорожная?" (с)
Так вот, зачем тебе выньапи?;)
for (int i=0; i<sizex; i++)
for (int j=0; j<sizey; j++)
newimage[j] = oldimage[j];


эээ. а для MEDIASUBTYPE_YV12? :D
 
  • 🟠 19:56 Загроза ударних БпЛАЗагроза БпЛА типу «Шахед»#м_Харків_та_Харківська_територіальна_громада
  • #9
Назад
Зверху Знизу