QRect visibleRect = ....;..............................QImage currentRegionMap = getRegion(screen,visibleRect.x(),visibleRect.y(),visibleRect.width(),visibleRect.height());//Получаю область картинки...int pixLen=currentRegionMap.bytesPerLine()/currentRegionMap.width();//Высчитываю длину пикселяBYTE* a=currentRegionMap.bits();//Получаю указатель на "данные" картинкиBYTE* b=screenMap.scanLine(visibleRect.y())+(pixLen*visibleRect.x());//Тут получаю указатель на регион в другой картинке ...
C++ (Qt)bool CompareParts( const QImage & img1, const QRect & R1, const QImage & img2, const QRect & R2 ){ if (R1.width() != R2.width()) return false; if (R1.height() != R2.height()) return false; int pixSize = img1.depth() / 8; if (!pixSize || pixSize != img2.depth() / 8) return CompareByPixels(img1, R1, img2, R2); for (int y = 0; y < R1.height(); ++y) { const uchar * src1 = img1.scanLine(y + R1.top()) + pixSize * R1.left(); const uchar * src2 = img2.scanLine(y + R2.top()) + pixSize * R2.left(); if (memcmp(src1, src2, R1.width() * pixSize) != 0) return false; } return true;}
C#BitmapData btmData= currentRegionMap.LockBits(new Rectangle(x, y, width, height), ImageLockMode.ReadOnly, currentRegionMap.PixelFormat);byte* a = (byte*)btmData.Scan0.ToPointer();
uchar * point= image.scanLine(2); for(int i=0;i<image.bytesPerLine();i++) { *point=0; point++; }
C++ (Qt) memset(image.scanLine(2), 0, image.bytesPerLine());
QPixmap MainWindow::getScreenshot(){ QScreen *screen = QGuiApplication::primaryScreen(); return screen->grabWindow(QApplication::desktop()->winId(),0,0,-1,-1);}