| | |
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Autor | Správa |
---|
Registrovaný: 25.12.06 Prihlásený: 01.03.13 Príspevky: 239 Témy: 20 Bydlisko: Krásno n/Ky... | Napísal m@-nX: 14.10.2010 1:24 | |
|
Zdravim,
zasekol som sa na jednom probleme, s ktorym si neviem dat rady a chcel by som Vas poprosim o rady. Moja aplikacia v podstate zachytava obraz z kamery a rendruje ho na obrazovku do PictureBox-u (o to sa stara API vyrobcu kamery, neviem ako tie metody vo vnutri funguju). Ja potrebujem zachyteni obraz zanalyzovat a po analyze ho vykreslit do dalsieho PictureBox-u. GUI mam pisane v C#, ale vsetko ostatne riesim v C++ pokial mozno s pouzitim WIN32 API. Skusim Vam podrobne popisat dany problem ktory mam.
HANDLE PictureBoxu predam z C# do C++
Kód: adapter.Init(0, analyzeBox.Handle.ToInt32()); Kód: int Device::Init(int phf, int handleWindow) { HWND analyzeWindowHandle = (HWND) handleWindow; ... } Takze v metode Analyze nacitam data z pamate, prebehnem to dakym tym algoritmom a chcem ich vykrelist do pripraveneho PictureBoxu. A to je ten problem. Neviem ako na to. Z debugu sa zda ze cez CreateBitmap sa Bitmapa v pohode vytvori, problem je, ze neviem ako ju zobrazit do PictureBox-u s vyuzitim HWND. Momentalne to skusam pomocou SendMessage, ale to mi tiez nefunguje. Kód: int Device::Analyze() { int width, height, bits, pitch, tempBitmapID; int rValue; char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);
if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS) return rValue;
if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS) return rValue; else { ...
HBITMAP hBmp = CreateBitmap(width,height,1,bits,tempBitmap);
LRESULT lr = SendMessage( this->analyzeWindowHandle, STM_SETIMAGE, IMAGE_BITMAP, (LPARAM) hBmp); }
return 0; }
Vopred dakujem za napady, rady, tipy, triky, alebo myslienky
|
|
Registrovaný: 11.01.09 Prihlásený: 19.04.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 14.10.2010 13:30 | |
|
Skús sa pozrieť >> sem << , možno nájdeš riešenie.
// nemám po ruke windows, takže s kódom ti môžem pomôcť najskôr v piatok večer
|
|
Registrovaný: 25.12.06 Prihlásený: 01.03.13 Príspevky: 239 Témy: 20 Bydlisko: Krásno n/Ky... | Napísal autor témy m@-nX: 15.10.2010 9:28 | |
|
Kód: int Device::Analyze() { int width, height, bits, pitch, tempBitmapID; int rValue; char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);
if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS) return rValue;
if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS) return rValue; else { ... BITMAPINFO Bmi={0}; Bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); Bmi.bmiHeader.biWidth = width; Bmi.bmiHeader.biHeight = height; Bmi.bmiHeader.biPlanes = 1; Bmi.bmiHeader.biBitCount = bits; Bmi.bmiHeader.biCompression = BI_RGB; Bmi.bmiHeader.biSizeImage = width*height*bits/8;
HDC hDc = GetDC(this->analyzeWindowHandle); HDC chDc = CreateCompatibleDC(hDc); HBITMAP hBmp = CreateCompatibleBitmap(hDc, width, height); if(SetDIBits(chDc, hBmp, 0, height, tempBitmap, &Bmi, DIB_RGB_COLORS) == ERROR_INVALID_PARAMETER) return 0; BOOL ok = BitBlt(hDc,0,0,width,height,chDc,0,0,SRCCOPY);
DWORD d = GetLastError(); } return 0; } V PictureBox-e sa mi nezobrazi nic. Pritom GetDC, CreateCompatibleDC aj HBITMAP mi vrati normalne handle. SetDIBits mi vrati 576 co je vlastne height a BitBlt mi vrati true... Tak troska nerozumiem, kde je problem? // pridané po 14 hodinách 9 minútach od posledného príspevku Vyriesene Kód: int Device::Analyze() { int width, height, bits, pitch, tempBitmapID; int rValue; char* tempBitmap = (char*) malloc((this->width * ((this->bits + 1) / 8) + 0) * this->height);
if(rValue = is_CopyImageMem(*this->cameraHandlePointer, imgMemory, imgMemoryID, tempBitmap) != IS_SUCCESS) return rValue;
if(is_InquireImageMem (*this->cameraHandlePointer, imgMemory, imgMemoryID, &width ,&height, &bits, &pitch) != IS_SUCCESS) return rValue; else { ... /**/ BITMAPINFO Bmi={0}; Bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); Bmi.bmiHeader.biWidth = width; Bmi.bmiHeader.biHeight = height; Bmi.bmiHeader.biPlanes = 1; Bmi.bmiHeader.biBitCount = bits; Bmi.bmiHeader.biCompression = BI_RGB; Bmi.bmiHeader.biSizeImage = width*height*bits/8;
HDC hDc = GetDC(this->analyzeWindowHandle); HDC chDc = CreateCompatibleDC(hDc); HBITMAP hBmp = CreateCompatibleBitmap(hDc, width, height); int res = (int) SelectObject(chDc,hBmp);
if(SetDIBits(chDc, hBmp, 0, height, tempBitmap, &Bmi, DIB_RGB_COLORS) == ERROR_INVALID_PARAMETER) return 0;
//BitBlt(hDc,0,0,width,height,chDc,0,0,SRCCOPY); StretchBlt(hDc,0,0,438,329,chDc,0,0,width,height,SRCCOPY); } return 0; }
Vdaka za pomoc
|
|
| Stránka: 1 z 1
| [ Príspevkov: 3 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| plynulé vyfarbenie bitmapy v JavaScript, VBScript, Ajax | 11 | 935 | 13.08.2009 19:56 pilná lama glama | | Prevod obrázka (bitmapy) do kriviek v Grafické programy | 1 | 3451 | 17.04.2009 15:05 Dudko | | Delphi Nahratie obrazka do bitmapy !! PLS HELP v Delphi, Visual Basic | 2 | 768 | 30.03.2009 17:49 1115Lukas | | vykreslenie vo flashi v Ostatné | 0 | 471 | 25.02.2009 23:40 jablko05 | | Vykreslenie grafu z ciselnych hodnot. v PHP, ASP | 1 | 624 | 16.10.2009 15:44 rooobertek | | C++ API Vykreslenie hodnoty premennej v Assembler, C, C++, Pascal, Java | 2 | 306 | 04.03.2013 23:38 Grash | | Vykreslenie koláčového diagramu v C++ v Assembler, C, C++, Pascal, Java | 2 | 535 | 15.05.2008 21:15 Marsello | | C# - vykreslenie trojuholníkov zo zadaných údajov v Technológia .NET | 3 | 1047 | 09.04.2011 18:46 walther | | Vykreslenie stránky v rôznych prehliadačoch- css problém v HTML, XHTML, XML, CSS | 2 | 410 | 31.03.2012 17:11 gogy27 | | Java - načítanie JPG obrázku a jeho vykreslenie v Assembler, C, C++, Pascal, Java | 2 | 1147 | 12.04.2010 10:54 Forty- | | Ako načítať z Edit-u do Timer-u v Delphi, Visual Basic | 13 | 1237 | 29.05.2011 17:27 petercvm | | píše ´u miesto ú... v Operačné systémy Microsoft | 2 | 454 | 09.04.2013 8:47 JTB | | u torrent v Sieťové a internetové programy | 1 | 684 | 11.09.2008 11:36 Gyrxiur | | U torrent v Sieťové a internetové programy | 1 | 909 | 06.04.2008 16:41 shiro | | D.U. v Vzdelanie, štúdium, škola | 4 | 1624 | 19.09.2006 20:00 Loki.:: | | U-TORRENT v Sieťové a internetové programy | 3 | 819 | 11.03.2009 16:51 f4r0 |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|