Картинки Всем привет. Возникла проблема, помогите кто может Вот есть часть кода: Code: HDC hDC;// основная поверхность для рисования /*Инициализация картинок*/ HBITMAP hBitmap; hDC=GetDC(hWnd); hназваниеDC=CreateCompatibleDC(hDC); hBitmap=LoadBitmap(hInstance,MAKEINTRESOURCE(IDB_название)); SelectObject(hvozdDC,hBitmap); DeleteObject(hBitmap); Ну и наконец рисую то что попалось в матрице case 0: BitBlt hDC,x*weight,y*height,weight,height,hкартинкаDC,0,0,SRCCOPY); break; А сама проблема в том что все это может вставить картинки только bmp и с ограниченым количеством бит. А на что нужно заменить код чтоб можно было вставить картинки формата png? Помогите плиз!!!
http://msdn.microsoft.com/en-us/library/ms536316%28VS.85%29.aspx http://msdn.microsoft.com/en-us/library/ms533815%28VS.85%29.aspx Кароч кури маны по GDI+ Там все достаточно просто и удобно
чего уж проще то? Graphics graphics(GetDC(hWnd)); Image img(L"C:\\test.png"); graphics.DrawImage(&img, 5, 5); Выучить технический английский для чтения доков гораздо быстрее, чем ждать переводов залетных, поверь. Тем более доки очень редко переводят. [ADDED] http://msdn.microsoft.com/en-us/library/ms536339%28VS.85%29.aspx тут описывается изменение логики кодирования с апи на gdi+. Тупо на глаз понятно что к чему. Хз какие еще доки найти понятнее.
Можно каким то извратным методом заставить поток саспендить самого себя, или это вообще технически невозможно?
Большое пасибо!!! Единственное последний вопрос: Почему когда я вышеописанным способом включаю кртинку, она не прозрачна?(тоесть я создаю прозрачный png прямоугольник,а он отображается белым)
т.е. не меняя ничего все работает?? string ... ? наверное я до этого не изучил еще. пока в курсе что строки как char-массивы вбиваются /да case это так и надо , просто потом добавил варианты, переписывать неохота/
Как объявить двух и трёхмерный динамический массив(используя операцию new)? Например, одномерный массив int * a = new int[10];
2x Code: int** arr = new int[Rows]; for (int i = 0; i < Rows; i++) { arr[i] = new int[Columns]; } 3x аналогично, только три цикла
Реализация алгоритма теста на простоту Миллера-Рабина. В чём ошибка. Code: #include <iostream> #include <cmath> int is_prime(int m){ using namespace std; int r = 1000; int t = m-1; int s = 0; bool b = true; if(m%2==0){ return false; } if(m==1){ return false; } if(m==2){ return true; } while(t%2==0 || b){ b = false; s++; t=t/2; } for(int i=1;i<r+1;i++){ int a = 2+rand()%(m-2); int x = int(float(pow(float(a),float(t))))%m; if((x==1)||(x==m-1)){ continue; } for(int j=1;j<s;j++){ x=int(float(pow(float(x),2)))%m; if(x==1){ return false; } if(x==m-1){ continue; } } } return true; } int main(){ using namespace std; int a,b; cin >> a >> b; for(int i=a;i<b;i++){ if(is_prime(i)){ cout << i << " "; } } cin >> a; return 0; } P.S Алгоритм, с которого я писал есть на википедии, страница так и называется тест миллера-рабина
Разницы нет, компиляция проходит и программа работает, но неправильно, выводит 15(оно составное) и не выводит 17(простое), если a=3, а b=20.
Да это я и так понял, сам алгоритм правильный, но я неправильно его реализовал(немного). Просто не могу найти ошибки. Более подходящего места вопросу не нашёл)
1) а у вас [2,m-1] http://www.cplusplus.com/reference/clibrary/cstdlib/rand/ 2) а (*) у вас нет 3) а у вас на следующую итерацию цикла "для r = 1 .. s − 1"
Честно говоря, на счёт rand, я сделал, а вот Return false; Это по-вашему что? А 3 пункт я и вовсе не понял