Графика
Последнее обновление этого раздела FAQ: November 3, 2006
ГРАФИКА И МУЛЬТИМЕДИА
1.Какой способ очистки TCanvas самый быстрый?
2.Как получить
TColor, имея значения красной, синей и зелёной составляющих?
3.Как имея TColor, получить значения красной, синей и зелёной
составляющих?
4.Как узнать яркость цвета?
5.Как использовать стандартные средства C++Builder
для работы с gif и jpeg файлами?
6.Как с помощью TMediaPlayer узнать, сколько длится фильм
в миллисекундах и в кадрах?
7.Как проиграть мп3-файл?
8.Преобразование битового изображения из
цветного в 256 градаций серого
9.Как рисунок
TBitmap сделать монохромным?
1.Какой способ очистки TCanvas самый быстрый?
АПИ функция PatBlt.
Пример:
PatBlt(PaintBox1->Canvas->Handle, //
Handle Canvas'а
0, // начальная координата по X
0, // начальная координата по Y
PaintBox1->Width, // конечная координата по X
PaintBox1->Height, // конечная координата по Y
WHITENESS // как закрашивать
);
2.Как получить TColor, имея значения красной, синей и
зелёной составляющих?
int red = random(255); // красная составляющая
int blue = random(255); // синяя составляющая
int green = random(255); // зеленая составляющая
Label1->Font->Color = (TColor)RGB(red,green,blue);
3.Как имея TColor, получить значения красной, синей и зелёной составляющих?
TColor color = ...;
unsigned red = GetRValue(color); // красная составляющая
unsigned green = GetGValue(color); // зеленая составляющая
unsigned blue = GetBValue(color); // синяя составляющая
4.Как узнать яркость цвета?
TColor color = ...;
unsigned luminosity = (GetRValue(color)*77 + GetGValue(color)*151 + GetBValue(color)*28)
>> 8;
5.Как использовать стандартные средства C++Builder для
работы с gif и jpeg файлами?
Для того, чтобы использовать стандартные компоненты для работы с файлами gif
и jpeg в C++Builder, необходимо зарегистрировать данные типы файлов. Для регистрации
напишите следующий код.
Для jpeg.
TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TJPEGImage), "jpg", "jpg",
__classid(TJPEGImage));
delete Picture;
Для gif.
TPicture *Picture = new TPicture();
Picture->RegisterFileFormat(__classid(TGIFImage), "gif", "gif",
__classid(TGIFImage));
delete Picture;
6.Как с помощью TMediaPlayer узнать, сколько длится фильм в миллисекундах и в кадрах?
MediaPlayer1->TimeFormat = tfFrames; //
устанавливаем формат времени в кадрах
ShowMessage("Длина в кадрах: " + IntToStr(MediaPlayer1->Length));
MediaPlayer1->TimeFormat = tfMilliseconds; // устанавливаем формат
времени в миллисекундах
ShowMessage("Длина в миллисекундах: " + IntToStr(MediaPlayer1->Length));
7.Как проиграть мп3-файл?
Для проигрывания мп3-файла воспользуйтесь следующим кодом:
HWND MCIHwnd = MCIWndCreate(Application->Handle, HInstance, NULL, "test.mp3");
MCIWndPlay(MCIHwnd);
8.Преобразование битового изображения из цветного в 256
градаций серого
// Преобразование осуществляется следующей функцией:
void SetBitmapPaletteToGreyScale(Graphics::TBitmap *pBitmap)
{
LOGPALETTE *pal;
HPALETTE hpal;
int i;
int PaletteSize; //Size of the palette buffer
pBitmap->PixelFormat = pf8bit;
pal = NULL;
PaletteSize = sizeof(TLogPalette) + (sizeof(TPaletteEntry) * 255);
pal = (LOGPALETTE *) malloc(PaletteSize);
pal->palVersion = 0x300;
pal->palNumEntries = 256;
for (i = 0 ; i <= 255; i++)
{
pal->palPalEntry[i].peRed = i;
pal->palPalEntry[i].peGreen = i;
pal->palPalEntry[i].peBlue = i;
pal->palPalEntry[i].peFlags = PC_NOCOLLAPSE;
}
hpal = CreatePalette(pal);
if(hpal != 0) pBitmap->Palette = hpal;
free(pal);
}
9.Как рисунок TBitmap сделать монохромным?
// напишите следующий код
BMP.Monochrome = true ; //где BMP - TBitmap
10.Как пpоигpать MIDI без MediaPlayer-а
// Для того чтобы проиграть MIDI:
#include <mmsystem.h>
mciSendString("open anny.mid
type sequencer alias MUSIC", NULL, 0, 0);
mciSendString("play MUSIC from 0", NULL, 0, 0);
11.Как воспроизвести звуковой файл без MediaPlayer-а
// Для того чтобы воспроизвести звуковой файл:
// напишите следующий код
#include "mmsystem.h"
DWORD fdwSound = SND_ASYNC | SND_FILENAME;
PlaySound("C:\\click.wav",NULL, fdwSound);
Author of article - MA F*CKA CREW 2006
www.builderhelper.3dn.ru
builder.helper@rambler.ru