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

Чтение BMP изобржений - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Может кто разъяснить как выполнить? http://www.cyberforum.ru/cpp-beginners/thread1024385.html
Напишите программу, рассчитывающую сумму денег, которые вы получи- те при вложении начальной суммы с фиксированной процентной ставкой дохода через определенное количество лет. Пользователь должен вводить с клавиатуры начальный вклад, число лет и процентную ставку. Приме- ром результата работы программы может быть следующий: Введите начальный вклад: 3000 Введите число лет: 10 Введите процентную...
C++ Параметры шаблона Доброго всем вечера. Вопрос по теории, который не выходит нагуглить. К примеру, нужно хранить статический массив интов с точно известным количеством параметров, и его нужно передать как параметр шаблонного класса. У меня, к примеру, const int s = ...; int Matrix = {...}; template<int size, int **array> class MatrixClass { http://www.cyberforum.ru/cpp-beginners/thread1024376.html
Класс бинарных деревьев. Наследование C++
Доброго времени суток! Имеется задание написать абстрактный класс бинарного дерева и класс рациональных чисел. От них отнаследовать классы АВЛ и красно-черного деревьев, и заполнить их рациональными числами. Для АВЛ и КЧ деревьев определить свои методы, вывод там, чтение из файла, добавление-удаление. Проблема в том, что отдельными классами я все это оформить могу, а вот с наследованием не...
C++ не могу разобраться
Написать программу, последовательно выполняющую перечисленные ниже задачи. Предусмотреть печать приглашения на ввод (строки, поясняющей пользователю, какие действия от него ждет программа) и информативный вывод данных. Все задачи должны быть оформлены в виде отдельных функций.
C++ Найти разность между произведением нечетных чисел и наибольшим среди отрицательных http://www.cyberforum.ru/cpp-beginners/thread1024337.html
Всем привет) Вот дали задачу племяннице, а она соответственно попросила меня ее решить полагая, что я понимаю в С++, пришлось согласиться. Теперь же я прошу у вас помощи. Вводится последовательность из N целых чисел, найти разность между произведением нечетных чисел и наибольшим среди отрицательных. (N вводится с клавиатуры) Заранее спасибо =)
C++ Реализация анимации в форме Как нарисовать и анимировать какой-либо объект в форме? Добавлено через 5 часов 58 минут Актуально подробнее

Показать сообщение отдельно
Noterus
1 / 1 / 0
Регистрация: 25.05.2013
Сообщений: 26
30.11.2013, 22:30     Чтение BMP изобржений
Доброе время суток. Задача считать BMP изображение и отрендарить его с помощью SDL. Написал функцию по чтению и у меня проблема в том что если ширина не кратна четырем, то изображение "ломается" и рендерит совершено не верно, а с глюками и еще проблема в том что даже если ширина кратна четырем, то рендерит перевернутое изображение.
Подскажите пожалуйста как исправить проблемы при рендеринге.. Спасибо за ответ=)
Кликните здесь для просмотра всего текста
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
#include <time.h>
#undef main
 
#define _ERROR_FILE 0xA
#define _FILE_SUCCESS 0xB
 
typedef unsigned char byte;
typedef struct PIX
{
    byte R;
    byte G;
    byte B;
} Pixel;
typedef struct ImegeBMP
{
    int windth;
    int height;
    short depth;
    short state;
    Pixel **pixmap;
} Imege;
 
Imege* LoadBMP(char *path)
{
    Imege *img=(Imege*)malloc(sizeof(Imege));
    FILE *BMP=fopen(path,"rb");
    if(!BMP)
    {
        img->state=_ERROR_FILE;
        img->pixmap=NULL;
        return img;
    }
    fseek(BMP,18,SEEK_SET);
    fread(&img->windth,sizeof(img->windth),1,BMP);
    fread(&img->height,sizeof(img->height),1,BMP);
    fseek(BMP,2,SEEK_CUR);
    fread(&img->depth,sizeof(img->depth),1,BMP);
    fseek(BMP,24,SEEK_CUR);
    img->pixmap=(Pixel**)malloc(img->height*sizeof(Pixel*));
 
    int i,j;
    for(i=0; i<img->height; i++)
    {
        img->pixmap[i]=(Pixel*)malloc(img->windth*sizeof(Pixel));
        for(j=0; j<img->windth; j++)
            fread(&img->pixmap[i][j],sizeof(Pixel),1,BMP);
        }
    img->state=_FILE_SUCCESS;
    return img;
}
 
int keys(SDL_Event*e)
{
    switch(e->key.keysym.sym)
    {
    case SDLK_ESCAPE:
        return 0;
        break;
    }
}
 
 
int main(int arge,char**argv)
{
    srand(time(0));
 
    if(SDL_Init(SDL_INIT_VIDEO)<0)
    {
        puts("video_error");
        return 1;
    }
    if(TTF_Init()<0)
    {
        puts("text_error");
        return 1;
    }
 
 
    Imege *img=LoadBMP("ti.bmp");
    printf("%d\n",img->state);
 
    SDL_Window *win=SDL_CreateWindow("Menu",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,1000,600,SDL_WINDOW_SHOWN);
    SDL_Renderer*ren=SDL_CreateRenderer(win,-1,SDL_RENDERER_SOFTWARE);
 
 
 
    int i,j;
    for(i=0;i<img->height;i++){
        for(j=0;j<img->windth;j++){
            SDL_SetRenderDrawColor(ren,img->pixmap[i][j].B,img->pixmap[i][j].G,img->pixmap[i][j].R,NULL);
            SDL_RenderDrawPoint(ren,j,i);
        }
    }
SDL_RenderPresent(ren);
SDL_Delay(5000);
 
 
    return 0;
}


P.s: Рендерю по пиксельно
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru