Форум программистов, компьютерный форум CyberForum.ru

Не получается перекрасить BMP-ку.What's the matter? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ помогите пож-та написать программу http://www.cyberforum.ru/cpp-beginners/thread375160.html
2005/4 - проверьте, не является ли слово "кас" корнем слова без приставки. - Отделите в слове повторяющиеся более двух раз буквы запятыми. - Вычеркните из слова букву, предшествующую сочетанию "ча"
C++ strcmp не работает! Ниже изложенная функция должна проверять не выходит ли за данный диапазон введенное число. Загвоздка вот в чем: strcmp сравнивает строки посимвольно, а у меня строка s почему то имеет значение первого символа. Что делать? Помогите пожалуйста!!! bool isRange(char* s) { char max="2147483647"; char min="-2147483648"; // константы из ТЗ if (s=='-') { int k=strcmp(s, min); if (k>0) {... http://www.cyberforum.ru/cpp-beginners/thread375152.html
C++ deck, stack, queue
Здраствуйте,проблема такова, написал программу в которой реализованы дек, стек и очередь, когда в меню выбираю дек, стек или очередь открываеться новое меню для каждой из программы и в этих меню неработают кнопки которые отвечают за вызов той или иной функции, помогите пожалуйста. #include "stdafx.h" #include "stdio.h" #include "process.h" #include "conio.h" #define DEK_SIZE 10 //cтек...
Найти в массиве максимальный и минимальный элементы и поменять их местами C++
Помогите разобраться Дан массив целых чисел. Найти в нем максимальный и минимальный элементы и поменять их местами. Задать размерность массива и организовать ввод массива с клавиатуры. Реализовать с помощью функций #include<iostream> using namespace std; void Input(int* a, int n) //функция ввода массива { for ( i = 0; i < n; i++) {
C++ Наследование, подскажите что не так http://www.cyberforum.ru/cpp-beginners/thread375109.html
Решил разобраться с наследованием, настрочил простенький такой код .. работать не хочет Подскажите что не так #include "stdafx.h" using namespace std; #include "iostream" class baza{
C++ Распечатать слова через запятую, заключив печатную строку в скобки В двумерном массиве записаны слова, представляющие собой последовательность цифр, завершающихся 0. Необходимо распечатать слова через запятую, заключив печатную строку в скобки. Длина печатной строки 60 символов. Извлечение слова оформить в виде функции. Например: исходные данные - 123023402303450 234450234567010 234455677670450 результат -... подробнее

Показать сообщение отдельно
ogcjm124
2 / 2 / 0
Регистрация: 31.07.2011
Сообщений: 143
30.10.2011, 21:15     Не получается перекрасить BMP-ку.What's the matter?
Всем привет.
1)Надо перекрасить BMP-ку в указанный user цвет.Конечно цвет меняется,но это происходит как-то странно.Можете глянуть код(см.ниже)?
2)После того,как я записываю все данные,в том числе и новый цвет вроде должен быть конец файла,но проверка говорит об обратном,почему так?
3)Ребят правильно ли я понимаю структуру Bmp-ки:
BITMAPFILEHEADER
BITMAPINFOHEADER
RGBQUAD
ГРАФИЧЕСКИЕ ДАННЫЕ
Итак,как я понимаю цвет каждого пикселся описывается структурой RGBQUAD,но тогда что содержит раздел ГРАФИЧЕСКИЕ ДАННЫЕ.
4)Когда я открываю файл на чтение,например он красного цвета.Я считываю данные в структуры BITMAPFILEHEADER,BITMAPINFOHEADER последовательно.После чего вычисляю сколько байт от BITMAPINFOHEADER до ГРАФИЧЕСКИХ ДАННЫХ и выясняю что 0;Таки образом данные о цветах у меня прочитать не получается как быть?
5)Верно ли утверждение что RGBQUAD содержится в разделе графические данные?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <Windows.h>
#include <conio.h>
#define BMFH BITMAPFILEHEADER
#define BMIH BITMAPINFOHEADER
using namespace std;
 
int main ()
{
    int i;
    BMFH bfh;
    BMIH bih;
    RGBQUAD palette;
    FILE *ptr;
    
    ptr=fopen("bmp.bmp","rb+");
    if (!ptr) exit(1);
    
    fread (&bfh,1,sizeof(BMFH),ptr);
    fread (&bih,1,sizeof(BMIH),ptr);
 
    RGBQUAD *buf=new RGBQUAD[bih.biWidth*bih.biHeight*sizeof(RGBQUAD)];
    
    cout << "Enter color\n";
    cin >> palette.rgbBlue >> palette.rgbGreen >> palette.rgbRed;
    palette.rgbReserved=0;
    
    for(i=0;i<bih.biHeight*bih.biWidth;i++)
        buf[i]=palette;
    
    fwrite(buf,1,bih.biWidth*bih.biHeight*sizeof(RGBQUAD),ptr);
 
    cout << feof(ptr);
    fclose(ptr);
    getch();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru