Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2019, 14:43   #1
Muriam
 
Регистрация: 27.01.2019
Сообщений: 3
По умолчанию C++ builder. Работа с графикой. Как исправить ошибки в коде?

Программа преобразовывает BMP файл, создав вокpуг него pамку из пикселей случайного цвета. Шиpина рамки - 15 пикселей.

Прикреплено фото с возникающими ошибками. Помогите их исправить.



файл Unit1.cpp
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#include "bmp.h"
#define MAXCOLORTC
//#include "wingraph.h"
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

  Bmp New;
  FileHeader *fh;
  MAPINFO *mi;
  RGBquad *rgb;
  //New.Open("CAT16.BMP");

  fh=New.GetFH();
  mi=New.GetMapInfo();
  BYTE *b=(BYTE*)(fh->bfOffbits+(long)fh);
  DWORD w,h;
  w=mi->Width;
  h=mi->Height;


  for (int i=0;i<h;i++)
      for (int j=0;j<w;j++)
        {
            if ((i<15)||(i>(h-1-15)))
                b[i*(w/2+1)+j]=(int)((float)rand()/RAND_MAX*256);

            if ((j<15-8)||(j>w+7-15))
                b[(i*(w/2)+j)]=(int)((float)rand()/RAND_MAX*256);
        }

//New.Save("gvozdika_frame.bmp");
//Image1->Picture->LoadFromFile("CAT16_frame.BMP");

}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
        Close();
}
//---------------------------------------------------------------------------
файл "bmp.h"
Код:
#include <io.h>
#include <stdio.h>
#pragma pack(1) 

struct FileHeader 
{
  WORD bfType; 		//тип файла
  DWORD bfSize;		//размер файла в dword
  WORD bfReserved1;        //не используется
  WORD bfReserved2;        //не используется
  DWORD bfOffbits;  	       //смещение данных битового образа от заголовка в байтах
};
struct MAPINFO 
{
  DWORD Size;             //число байт, занимаемых структурой InfoHeader
  DWORD Width;           //ширина битового образа в пикселях
  DWORD Height;          //высота битового образа в пикселях
  WORD Planes;             //число битовых плоскостей устройства
  WORD BitCount;          //число битов на пиксель
  DWORD Compression;  //тип сжатия
  DWORD SizeImage;      //размер картинки в байтах
  long XPelsPerMeter;      //горизонтальное разрешение устройства,
  long YPelPerMeter;        //вертикальное разрешение устройства, 
  DWORD ClrUsed;           //число используемых цветов
  DWORD ClrImportant;   //число "важных" цветов
};

struct RGBquad 
{
    byte rgbRed;            //интенсивность красного
    byte rgbGreen;         //интенсивность зеленого
    byte rgbBlue;           //интенсивность голубого    
    byte rgbReserved;    //не используется
};

class Bmp
{
private:
  void *pBmp;
  long SizeFile;
public:
  Bmp();
  ~Bmp();
  void Open(char* fn);
  void Save(char* fn);
  FileHeader *GetFH();
  MAPINFO *GetMapInfo();
  RGBquad *GetMap();
};

void Bmp::Save(char* fn)
{
        FILE* File;
        File=fopen(fn,"wb");
        fwrite(pBmp,1,SizeFile,File);
        fclose(File);
}

RGBquad *Bmp::GetMap()
{
  RGBquad *rgb;
  rgb=(RGBquad *)((long)pBmp+sizeof(FileHeader)+sizeof(MAPINFO));
  return rgb;
}

MAPINFO *Bmp::GetMapInfo()
{
  MAPINFO *mi;
  mi=(MAPINFO*)((long)pBmp+sizeof(FileHeader));
  return mi;
}

FileHeader *Bmp::GetFH()
{
  FileHeader *fh;
  fh=(FileHeader *)pBmp;
  return  fh;
}

Bmp::Bmp()
{
  pBmp=0;
  SizeFile=0;
}

Bmp::~Bmp()
{
  delete []pBmp;
}

void Bmp::Open(char* fn)
{
  FILE* File;
        int hFile;
        File=fopen(fn,"rb");
        hFile=_fileno(File);
        SizeFile=filelength(hFile);
        pBmp=(BYTE*)malloc(SizeFile);
        fread(pBmp,1,SizeFile,File);
        fclose(File);
}
файл "Unit1.h"
Код:
//---------------------------------------------------------------------------

#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Graphics.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:	// IDE-managed Components
        TImage *Image1;
        TButton *Button1;
        TButton *Button2;
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Button2Click(TObject *Sender);
private:	// User declarations
public:		// User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Изображения
Тип файла: png error.png (16.6 Кб, 57 просмотров)
Тип файла: jpg форма.jpg (103.5 Кб, 56 просмотров)
Вложения
Тип файла: rar 1.rar (1.17 Мб, 12 просмотров)
Muriam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
С++ Исправить ошибки в коде artilun Общие вопросы C/C++ 3 03.11.2016 10:39
Помогите исправить ошибки в коде lomik222 Общие вопросы C/C++ 5 11.03.2016 09:51
Помогите пожалуйста исправить ошибки в коде Nata Golden rose Общие вопросы C/C++ 6 18.05.2014 23:28
Ошибки в коде. Необходимо исправить. Vladzis Общие вопросы C/C++ 6 06.05.2014 17:28
Ошибки в коде для Builder C++ ололошенько C++ Builder 21 22.08.2010 15:26