Russian Qt Forum
Июнь 16, 2024, 19:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Аналог LockBits, работа с битмапом  (Прочитано 17020 раз)
GPPsoft
Гость
« : Декабрь 14, 2013, 09:19 »

Здравствуйте. Нужен аналог данного метода класса Bitmap в C#. Мне нужно получить указатель на начало указанного участка изображения. В C# я делал так:
Код
C#
Bitmap currentRegionMap = ....
 
BitmapData btmData= currentRegionMap.LockBits(new Rectangle(x, y, width, height), ImageLockMode.ReadOnly, currentRegionMap.PixelFormat);
 
byte* a = (byte*)btmData.Scan0.ToPointer();
 
 

Как сделать похожее в Qt? Заранее спасибо за ответы!
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #1 : Декабрь 14, 2013, 09:26 »

QImage::bits()
QImage::scanLine(int i)
Записан
GPPsoft
Гость
« Ответ #2 : Декабрь 14, 2013, 10:18 »

QImage::scanLine(int i)
Указатель на начало с пикселя i? Т.е нумерация пикселей построчная? Т.е к примеру если 2 строки по 200 пикселей, то 101 пиксель будет на начале второй строки Улыбающийся?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #3 : Декабрь 14, 2013, 10:28 »

Указатель на начало с пикселя i?
Возвращает указатель на первый пиксель i-той строки.

Т.е к примеру если 2 строки по 200 пикселей, то 101 пиксель будет на начале второй строки Улыбающийся?
Если i == 1, то вернется указатель на начало второй строки, на 200-тый пиксель в памяти. Нумерация с 0.
Записан
GPPsoft
Гость
« Ответ #4 : Декабрь 14, 2013, 11:32 »

Указатель на начало с пикселя i?
Возвращает указатель на первый пиксель i-той строки.

Т.е к примеру если 2 строки по 200 пикселей, то 101 пиксель будет на начале второй строки Улыбающийся?
Если i == 1, то вернется указатель на начало второй строки, на 200-тый пиксель в памяти. Нумерация с 0.

Ок. Спасибо. Жаль нет аналогичной функции чтобы не высчитывать вручную.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #5 : Декабрь 14, 2013, 11:39 »

Жаль нет аналогичной функции чтобы не высчитывать вручную.
Где нет?
И что там считать, все же элементарно. Улыбающийся
Записан
GPPsoft
Гость
« Ответ #6 : Декабрь 14, 2013, 11:53 »

Жаль нет аналогичной функции чтобы не высчитывать вручную.
Где нет?
И что там считать, все же элементарно. Улыбающийся
Ну да. Придется сначала узнать какой длины пиксель. Потом сместиться на это число... Проще хочется. Как в C# Улыбающийся
Записан
Bepec
Гость
« Ответ #7 : Декабрь 14, 2013, 11:58 »

ЫЫЫЫ... Какой длины пиксель?

PS прошу извинить за сей недостойный комментарий, но первая реакция всегда самая правдивая. И всё же, какой длины пиксель?
Записан
GPPsoft
Гость
« Ответ #8 : Декабрь 14, 2013, 12:00 »

ЫЫЫЫ... Какой длины пиксель?
Ну да. 3 байта, 4 байта если с альфа каналом. Что не так? Улыбающийся
Записан
Bepec
Гость
« Ответ #9 : Декабрь 14, 2013, 12:02 »

Непонятно мне зачем смещаться и что-то делать, если вам сразу даётся указатель на него? Нафига?
Записан
GPPsoft
Гость
« Ответ #10 : Декабрь 14, 2013, 12:04 »

Непонятно мне зачем смещаться и что-то делать, если вам сразу даётся указатель на него? Нафига?
Указатель на первый пиксель N строки. А мне к примеру нужно поработать с областью (64,64,10,10) в битмапе с разверткой 1280x800. Вот код на шарпе дает мне указатель на x,y точки.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #11 : Декабрь 14, 2013, 12:14 »

А мне к примеру нужно поработать с областью (64,64,10,10) в битмапе с разверткой 1280x800. Вот код на шарпе дает мне указатель на x,y точки.
Напишите один раз такую функцию и пользуйтесь. Она будет очень простая.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #12 : Декабрь 14, 2013, 15:14 »

Вот код на шарпе дает мне указатель на x,y точки.

Очевидно, что написать всё что можно внутри тулкита нельзя, всегда останутся недовольные. Такой функции нет видимо потому, что она никому не нужна была.
Записан
Bepec
Гость
« Ответ #13 : Декабрь 14, 2013, 15:15 »

Я до сих пор в ней смысла не вижу Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #14 : Декабрь 14, 2013, 16:53 »

Указатель на первый пиксель N строки. А мне к примеру нужно поработать с областью (64,64,10,10) в битмапе с разверткой 1280x800. Вот код на шарпе дает мне указатель на x,y точки.
"Учиться легко, трудно переучиваться"  Улыбающийся Ведь код на шарпе был освоен и стал классикой, эталоном к которому нужно стремиться. Хотя с точки зрения программиста на С, он, мягко говоря, "очень затратный", да и удобством не блещет.
Записан
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.115 секунд. Запросов: 22.