Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов»



страница4/5
Дата26.07.2014
Размер0.59 Mb.
ТипПояснительная записка
1   2   3   4   5

4 СТРУКТУРА ПРИЛОЖЕНИЯ

Структура системы представлена в виде схемы (см. рис. 4.1). Запуск приложения


Открытие BMP-файла

О программе

Работа с изображением

Сохранить как GIF

Эффект шума для H

Фильтрация

О базисах

Выход


Просмотр GIF

Рисунок 4.1 – Структура приложения

5 ВЫБОР ИНСТРУМЕНТАЛЬНЫХ СРЕДСТВ ДЛЯ РЕАЛИЗАЦИИ ПРОГРАММЫ, ОБОСНОВАНИЕ ВЫБОРА


В связи с тем, что сегодня уровень сложности программного обеспечения очень высок, разработка приложений Windows с использованием только одного какого-либо языка программирования значительно затрудняется. Программист должен затратить массу времени на решение стандартных задач по созданию многооконного интерфейса. Реализация технологии связывания и встраивания объектов потребует от программиста еще более сложной работы.

Одним из самых популярных инструментов для создания функциональных и удобных Windows-приложений является язык программирования C++ и входящая в состав Microsoft Visual Studio 2008, Windows Forms. Она включает в себя практически весь программный интерфейс Windows и позволяют пользоваться при программировании средствами более высокого уровня, чем обычные вызовы функций. За счет этого значительно упрощается разработка приложений, имеющих сложный интерфейс пользователя, облегчается поддержка технологии OLE и взаимодействие с базами данных.

Данная курсовая работа выполнена на объектно-ориентированном языке С++. Это объясняется тем, что программные продукты созданные в с помощью C++ наиболее просты в использовании и не требуют от пользователей глубоких знаний в управлении программами.


    1. ОПИСАНИЕ ОСНОВНЫХ МОДУЛЕЙ ПРОГРАММЫ

Класс Format предназначен для работы с файлом BMP. Реализация класса показана на рисунке 6.1.




class Format {

public:


BYTE* aBitmapBits;// массив пикселов

BYTE* aBitmapBits1;

BYTE* aBitmapCMY;

BYTE* aBitmapHSV;

BYTE R;

BYTE G;


BYTE B;
Format();

~Format();

BOOL CreateDib24(int w, int h, const char* fileName);

void StoreDib24();

BOOL LoadFromFile(const char* fileName);

void SetPixel(int x, int y, COLORREF color);

int Draw(HDC hdc, int xDst, int yDst, int wDst, int hDst,

int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);

int GetWidth() { return width; }

int GetHeight() { return height; }

const char* GetError() { return error.

c_str();}

void RGBtoCMY();

void RGBtoHSV();

void CMYtoRGB();

void HSVtoRGB();

void BazisС();

void BazisM();

void BazisY();

void BazisH();

void BazisS();

void BazisV();

void NoiseM();

void NoiseS();

void Filter();

void Save();

void Circ();

void Transformtocirc(int x,int y);

int Draw1(HDC hdc, int xDst, int yDst, int wDst, int hDst,

int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);

void TransformPix(int x,int y);


private:

int width;

int height;

int bytesPerLine;

BITMAPFILEHEADER fileHead; // заголовок растрового файла

BITMAPINFOHEADER infoHead; // заголовок информационного блока

BITMAPINFOHEADER* pInfoHead;

int fileHeadSize;

int infoHeadSize;

int imageSize;

string error;

ofstream outFile;

};

Рисунок 6.1 – Интерфейс класса Format

Кроме традиционных для класса методов, таких как конструктор и деструктор, класс Format содержит методы, перечисленные ниже:

1) Метод CreateDib24 создает в памяти 24-разрядный растр с заданными шириной и высотой. В процессе создания осуществляется инициализация полей заголовка растрового файла и заголовка информационного блока. После этого выделяется память для хранения массива пикселов. В завершение открывается дисковый файл с заданным именем, предназначенный для сохранения в нем создаваемого растра.

2) Метод SetPixel осуществляет прямой доступ к пикселам в 24-разрядном растре. Цветовая информация для синей, зеленой и красной составляющих цвета пиксела записывается в соответствующие элементы массива aBitmapBits. Адреса элементов вычисляются через номер строки развертки у и номер пиксела в строке х.

3) Метод StoreDib24 сохраняет созданный растр, записывая его на диск в формате GIF.

4) Метод LoadFromFile загружает BMP-файл с заданным именем, считывая его с диска в оперативную память. В процессе загрузки сначала читается заголовок растрового файла, затем вычисляются размер заголовка информационного блока в совокупности с цветовой таблицей, который указывается в поле infoHeadSize. Помимо этого в поле imageSize указывается вычисленный размер изображения в байтах. Полученные величины используются для указания размеров динамически выделяемой памяти под заголовок информационного блока plnfoHead и под массив пикселов aBitmapBits. После выделения указанной памяти соответствующие компоненты растра читаются из файла.

5) Метод Draw выводит растр на поверхность графического устройства, используя функцию StretchDIBits.

6) Метод RgbToHls переводит даныые изображения из RGB в HLS.

7) Метод HlsToRgb переводит данные изображения из HLS в RGB.

8) Метод NoiseM зашумляет составляющую M

9) Метод NoiseS переводит данные изображения из RGB в HLS, зашумляет составляющую S и обратно переводит из HLS в RGB.

10) Метод Filter применяет фильтр «размытие» к изображению.
Таблица 6.1 Методы класса KDib.


Метод

Тип

Назначение

CreateDib24

BOOL

Создает GIF – файл

StoreDib24

VOID

Пересылка данных изображения

LoadFromFile

BOOL

Загружает BMP – файл

SetPixel

VOID

Устанавливает пиксель в контексте

Draw

INT

Вывод на экран изображения

GetWidth

INT

Возвращает ширину

GetHeight

INT

Возвращает высоту

GetError

CHAR*

Возвращает ошибку

RGBtoHSV

VOID

Переводит из RGB в HSV

HSVToRGB

VOID

Переводит из HSV в RGB

LoadFromFile

BOOL

Загружает BMP – файл

GetA

BYTE*

Возвращает массив пикселов

Draw

INT

Вывод на экран изображения

GetWidth

INT

Возвращает ширину

GetHeight

INT

Возвращает высоту

NoiseB

VOID

Зашумляет B

NoiseS

VOID

Защумляет S

Filter

VOID

Фильтрует

7 Тестирование, результаты работы программы


Программа написана под операционную систему от Windows XP до Windows VISTA. Для установки системы нет необходимости в особых настройках.

Требования к аппаратной платформе – процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium III 800 МГц), оперативной памяти - 512 Мбайт (рекомендуется 1024 Мбайт), достаточное количество свободного дискового пространства всего 50 Mб.

В результате была разработана программа, имеющая интерфейс, удобный и простой для пользователя, выполняющая открытие, сохранение файлов графических форматов GIF и BMP, и реализующая спецэффекты.

ВЫВОДЫ
В разработанном приложении решены поставленные в техническом задании задачи, и реализованы требуемые возможности для работы с графическими форматами GIF и ВМР.

Приложение является законченной программой, однако, оно может быть дополнено многими другими возможностями, в частности, работа с другими графическими форматами данных, реализованы дополнительные графические эффекты: разложение по другим базисам, эффекты шума для нескольких составляющих.

К недостаткам данного проекта можно отнести ограниченность его применения только в учебных и методических целях.

Список используемой литературы


    1. Компьютерная графика/Под ред. В.Н. Порева – К.: Юниор, 2005. – 520с., ил.

    2. http://ru.wikipedia.org/wiki/BMP

    3. http://ru.wikipedia.org/wiki/GIF

    4. http://www.a-print.ru/index.php?page=d2-07

    5. Методические указания и задания к курсовой работе по курсу “Методы и способы компьютерных информационных технологий“/ сост.: доц. Губенко Н.Е., асс. Чернышова А.В. – Донецк: ДонНТУ, 2003 - 88 с.

    6. http://ru.wikipedia.org/


Приложение А Техническое задание

ПРИЛОЖЕНИЕ Б. ЭКРАННЫЕ ФОРМЫ



Рисунок 1 – Базис CMY



Рисунок 2 – Базис HSV



Рисунок 3 – Применение фильтра



Рисунок 4 – Зашумление S


Рисунок 5 – Зашумление M



Рисунок 6 – Эффект наложения кругов


ПРИЛОЖЕНИЕ В. ЛИСТИНГ ПРОГРАММЫ

Format.h


class Format {

public:


BYTE* aBitmapBits;// массив пикселов

BYTE* aBitmapBits1;

BYTE* aBitmapCMY;

BYTE* aBitmapHSV;

BYTE R;

BYTE G;


BYTE B;
Format();

~Format();

BOOL CreateDib24(int w, int h, const char* fileName);

void StoreDib24();

BOOL LoadFromFile(const char* fileName);

void SetPixel(int x, int y, COLORREF color);

int Draw(HDC hdc, int xDst, int yDst, int wDst, int hDst,

int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);

int GetWidth() { return width; }

int GetHeight() { return height; }

const char* GetError() { return error.c_str();}

void RGBtoCMY();

void RGBtoHSV();

void CMYtoRGB();

void HSVtoRGB();

void BazisС();

void BazisM();

void BazisY();

void BazisH();

void BazisS();

void BazisV();

void NoiseM();

void NoiseS();

void Filter();

void Save();

void Circ();

void Transformtocirc(int x,int y);

int Draw1(HDC hdc, int xDst, int yDst, int wDst, int hDst,

int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop);

void TransformPix(int x,int y);


private:

int width;

int height;

int bytesPerLine;

BITMAPFILEHEADER fileHead; // заголовок растрового файла

BITMAPINFOHEADER infoHead; // заголовок информационного блока

BITMAPINFOHEADER* pInfoHead;

int fileHeadSize;

int infoHeadSize;

int imageSize;

string error;

ofstream outFile;

};
Format.cpp

#include "Format.h"

#include

Format::Format()

{

fileHeadSize = sizeof(BITMAPFILEHEADER);



fileHead.bfType = 0x4d42;

aBitmapBits = NULL;

}
Format::~Format() {

if (pInfoHead) delete [] pInfoHead;

if (aBitmapBits) delete [] aBitmapBits;

if (outFile) outFile.close();

}

BOOL Format::CreateDib24(int w, int h, const char* fileName) {



width = w;

height = h;

bytesPerLine = ((width * 24 + 31) / 32) * 4;

imageSize = bytesPerLine * height;


infoHeadSize = sizeof(BITMAPINFOHEADER);

fileHead.bfSize = fileHeadSize + infoHeadSize + bytesPerLine * height;

fileHead.bfOffBits = fileHeadSize + infoHeadSize;
infoHead.biSize = infoHeadSize;

infoHead.biWidth = width;

infoHead.biHeight = height;

infoHead.biPlanes = 1;

infoHead.biBitCount = 24;

infoHead.biCompression = BI_RGB;

infoHead.biSizeImage = imageSize;
aBitmapBits;
outFile.open(fileName, ios::out | ios::binary | ios::trunc);

if (!outFile) return FALSE;

else return TRUE;

}
BOOL Format::LoadFromFile(const char* fileName) {

ifstream inpFile;

inpFile.open(fileName, ios::in | ios::binary);

if (!inpFile) {

error = "Неверное имя файла или каталога.";

return FALSE;

}

inpFile.read((char*)&fileHead, fileHeadSize);



if (fileHead.bfType != 0x4d42) {

error = "Это не BMP-файл";

return FALSE;

}

infoHeadSize = fileHead.bfOffBits - fileHeadSize;



int fileSize = fileHead.bfSize;

imageSize = fileSize - (fileHeadSize + infoHeadSize);


pInfoHead = (BITMAPINFOHEADER*)(new BYTE [infoHeadSize]);

inpFile.read((char*)pInfoHead, infoHeadSize);


width = pInfoHead->biWidth;

height = pInfoHead->biHeight;


aBitmapBits = new BYTE[imageSize];

inpFile.read((char*)aBitmapBits, imageSize);

return true;

}

int Format::Draw(HDC hdc, int xDst, int yDst, int wDst, int hDst,



int xSrc, int ySrc, int wSrc, int hSrc, DWORD rop) {

return StretchDIBits(hdc, xDst, yDst, wDst, hDst, xSrc, ySrc, wSrc, hSrc,

aBitmapBits, (CONST BITMAPINFO*)pInfoHead, DIB_RGB_COLORS, rop);

}
void Format::SetPixel(int x, int y, COLORREF color) {

int row = y;

int col = 3 * x;

aBitmapBits[row*bytesPerLine + col] = GetBValue(color);

aBitmapBits[row*bytesPerLine + col+1] = GetGValue(color);

aBitmapBits[row*bytesPerLine + col+2] = GetRValue(color);

aBitmapBits;

}
void Format::StoreDib24() {

// Запись заголовка BMP-файла

outFile.write((char*)&fileHead, fileHeadSize);

outFile.write((char*)&infoHead, infoHeadSize);

// Запись массива пикселей

outFile.write((char*)aBitmapBits, imageSize);

}
void Format::CMYtoRGB()

{

HDC hdc;



BYTE R,G,B,C,M,Y;

int x = GetWidth();

int y = GetHeight();

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

int row = y;

int col = 3 * x;

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++){

C = aBitmapCMY[row*bytesPerLine + col*3 + 2];

M = aBitmapCMY[row*bytesPerLine + (col*3)+ 1];

Y = aBitmapCMY[row*bytesPerLine + (col*3)];
R = 255-C;

G = 255-M;

B = 255-Y;
aBitmapBits[row*bytesPerLine + (col*3)] = B;

aBitmapBits[row*bytesPerLine + (col*3)+ 1] = G;

aBitmapBits[row*bytesPerLine + col*3 + 2] = R;

}

aBitmapBits;



}
void Format::RGBtoCMY()

{

BYTE R,G,B,C,M,Y;



int x = GetWidth();

int y = GetHeight();

int row = y;

int col = 3 * x;

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

imageSize = x * y * 3;

aBitmapCMY = new BYTE[imageSize];

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++){

R = aBitmapBits[row*bytesPerLine + col*3 + 2];

G = aBitmapBits[row*bytesPerLine + (col*3)+ 1];

B = aBitmapBits[row*bytesPerLine + (col*3)];


C = 255-R;

M = 255-G;

Y = 255-B;
aBitmapCMY[row*bytesPerLine + (col*3)] = Y;

aBitmapCMY[row*bytesPerLine + (col*3)+ 1] = M;

aBitmapCMY[row*bytesPerLine + col*3 + 2] = C;

}

aBitmapBits=aBitmapCMY;



}
void Format::RGBtoHSV(){

BYTE R,G,B,H,S,V;

double rgbmin,rgbmax;

double rc,bc,gc;

double ht=0.0,st=0.0;

int x = GetWidth();

int y = GetHeight();

int row = y;

int col = 3 * x;

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

imageSize = x * y * 3;

aBitmapHSV = new BYTE[imageSize];

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++)

{

R = aBitmapBits[row*bytesPerLine + col*3 + 2];



G = aBitmapBits[row*bytesPerLine + (col*3)+ 1];

B = aBitmapBits[row*bytesPerLine + (col*3)];

rgbmin = min(R,min(G,B));

rgbmax = max(R,max(G,B));


if (rgbmax > 0.0)

st = (rgbmax - rgbmin) / rgbmax;


if (st > 0.0) {

rc = (rgbmax - R) / (rgbmax - rgbmin);

gc = (rgbmax - G) / (rgbmax - rgbmin);

bc = (rgbmax - B) / (rgbmax - rgbmin);

if (R == rgbmax) ht = bc - gc;

else if (G == rgbmax) ht = 2 + rc - bc;

else if (B == rgbmax) ht = 4 + gc - rc;

ht = ht * 60.0;

if (ht < 0.0) ht += 360.0;

}

H = ht / 360.0;



V = rgbmax;

S = st;
aBitmapHSV[row*bytesPerLine + (col*3)] = V;

aBitmapHSV[row*bytesPerLine + (col*3)+ 1] = S;

aBitmapHSV[row*bytesPerLine + col*3 + 2] = H;

}

}
void Format::HSVtoRGB()



{

BYTE R,G,B,H,S,V,i_H;

int ii;

double fr;

unsigned char c1, c2, c3;

int x = GetWidth();

int y = GetHeight();

int row = y;

int col = 3 * x;

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++){

i_H = aBitmapHSV[row*bytesPerLine + col*3 + 2];

S = aBitmapHSV[row*bytesPerLine + (col*3)+ 1];

V = aBitmapHSV[row*bytesPerLine + (col*3)];

if (!S)


R = G = B = V;

else


{

while (i_H >= 360)

i_H -= 360;

H = i_H;


ii = (int)(H /= 60.0);

fr = H - ii;

c1 = (V * (255 - S)) / 255;

c2 = (V * (255 - S * fr)) / 255;

c3 = (V * (255 - S * (1.0 - fr))) / 255;

switch (ii)

{

case 0: R = V; G = c3; B = c1; break;



case 1: R = c2; G = V; B = c1; break;

case 2: R = c1; G = V; B = c3; break;

case 3: R = c1; G = c2; B = V; break;

case 4: R = c3; G = c1; B = V; break;

case 5: R = V; G = c1; B = c2; break;

} // switch

} // if (!sat)

aBitmapBits[row*bytesPerLine + (col*3)] = B;

aBitmapBits[row*bytesPerLine + (col*3)+ 1] = G;

aBitmapBits[row*bytesPerLine + col*3 + 2] = R;

}

}
void Format::NoiseM(){



BYTE M;

int x = GetWidth();

int y = GetHeight();

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++){

M = aBitmapCMY[row*bytesPerLine + (col*3)+1];

M+=rand();

if(M < 0) M = 0;

if(M > 255) M = 255;

aBitmapCMY[row*bytesPerLine + (col*3)+1] = M;

}

aBitmapBits = aBitmapCMY;



}
void Format::NoiseS(){

BYTE S;


int x = GetWidth();

int y = GetHeight();

int bytesPerLine = ((x * 24 + 31) / 32) * 4;

for(int row = 0;row < y;row++)

for(int col = 0;col < x;col++){

S = aBitmapHSV[row*bytesPerLine + (col*3)+1];

S+=rand();

if(S < 0) S = 0;

if(S > 255) S = 255;

aBitmapHSV[row*bytesPerLine + (col*3)+1] = S;

}

aBitmapBits = aBitmapHSV;



}
void Format::TransformPix(int x,int y){

BYTE NewBGR[3];

int Pixel[3];

BYTE Pix[3];

int w = GetWidth();

int h = GetHeight();

int count = 9;

int Matrix[9]={1,2,1,

2,4,2,

1,2,1};


int bytesPerLine = ((w * 24 + 31) / 32) * 4;

// x y


for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[y*bytesPerLine + x*3 + c];

Pixel[c] = NewBGR[c] * Matrix[4];

}

// x-1 y-1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y-1)*bytesPerLine + (x-1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[0];

}

// x y-1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[y*bytesPerLine + (x-1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[1];

}

// x+1 y-1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y+1)*bytesPerLine + (x-1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[2];

}

// x+1 y



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y+1)*bytesPerLine + x*3 + c];

Pixel[c] += NewBGR[c] * Matrix[5];

}

// x+1 y+1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y+1)*bytesPerLine + (x+1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[8];

}

// x y+1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[y*bytesPerLine + (x+1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[7];

}

// x-1 y+1



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y-1)*bytesPerLine + (x+1)*3 + c];

Pixel[c] += NewBGR[c] * Matrix[6];

}

// x-1 y



for (int c = 0; c < 3; c++){

NewBGR[c] = aBitmapBits[(y-1)*bytesPerLine + x*3 + c];

Pixel[c] += NewBGR[c] * Matrix[3];

}

for (int c = 0; c < 3; c++){



if(count!=0)

Pixel[c] = Pixel[c]/count;

Pix[c] = BYTE (Pixel[c]);

if(Pix[c] < 0)

Pix[c] = 0;

else if(Pix[c] > 255)

Pix[c]=255;

aBitmapHSV[y*bytesPerLine + x*3 + c] = Pix[c];

}

}
void Format::Filter(){



int w = GetWidth();

int h = GetHeight();

imageSize = w * h * 4;

aBitmapHSV = new BYTE[imageSize];

for(int y = 1; y < h-1;y++)

for(int x = 1;x < w-1;x++){

TransformPix(x,y);

}

aBitmapBits = aBitmapHSV;



}
void Format::BazisС()

{

BYTE R,G,B,C,M,Y;



int x = GetWidth();

int y = GetHeight();

int row = y;

1   2   3   4   5

Похожие:

Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconФорматы графических файлов Web (gif, jpeg)
Рассмотрим набор инструментальных средств для ра­боты с форматами графических файлов Web1
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconОтчет по Курсовой работе По курсу: компьютерная графика «Исследование графических форматов»
...
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconРазработка методов классификации и поиска в коллекциях графических документов и создание информационной системы
Целью данной работы является разработка методов классификации и поиска графической информации и создание информационной системы,...
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconТемы рефератов развитие способов графических изображений в эпоху Возрождения
Методика преподавания графических дисциплин профессором В. О. Гордоном (1892-1971)
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconПояснительная записка к курсовому проекту по курсу: «Системы реального времени»
Их производительность и объем памяти вполне достаточны для решения множества бытовых и промышленных задач, а архитектура ядер многих...
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconПояснительная записка к курсовому проекту по дисциплине «Методы численного анализа» на тему «Ортогональное разложение матриц и его применения»
Главный упор делается на использование ортогональных преобразований в задаче нахождения всех собственных числе (в том числе кратных...
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconПояснительная записка к курсовому проекту по дисциплине «Конструирование измерительных приборов»

Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconПояснительная записка к курсовому проекту по курсу «Схемотехника эвм»
Использовано 5 литературных источников. Графическая часть включает в себя 4 документа: схему электрическую функциональную (Э2), схему...
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconИнновационный проект «Разработка компьютерных игр для обучения в сфере информационных технологий» номинация
Разрабатываемые игры предназначены для использования вузами, а также для самостоятельного изучения информационных технологий
Пояснительная записка к курсовому проекту по курсу «Методы и способы компьютерных информационных технологий» на тему «Разработка программных способов для просмотра графических файлов, создание графических эффектов» iconКонспект урока «Рисование графических примитивов в растровых и векторных графических редакторах. Инструменты рисования растровых графических редакторов» Донская Наталья Ивановна
...
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org