Registriert seit: 30. Jan 2004
823 Beiträge
|
AW: Dynamisches Array Grenze?
28. Mär 2012, 22:37
Delphi-Quellcode:
var
tempBitmap: BITMAPINFO;
pvBits: Pointer;
mDC: THandle;
mainBitmap: Thandle;
x, y: integer;
q: ^TRGBTriple;
idx: integer;
begin
ZeroMemory(@tempBitmap, sizeof(BITMAPINFO));
tempBitmap.bmiHeader.biSize := SizeOf(BITMAPINFOHEADER);
tempBitmap.bmiHeader.biBitCount := 24;
tempBitmap.bmiHeader.biWidth := 1920;
tempBitmap.bmiHeader.biHeight := 1080;
tempBitmap.bmiHeader.biPlanes := 1;
tempBitmap.bmiHeader.biCompression := BI_RGB;
tempBitmap.bmiHeader.biSizeImage := tempBitmap.bmiHeader.biWidth * tempBitmap.bmiHeader.biHeight * 3;
mDC := CreateCompatibleDC(0);
mainBitmap := CreateDIBSection(mDC, tempBitmap, DIB_RGB_COLORS, pvBits, 0, 0);
SelectObject(mDC, mainBitmap);
FillChar(pvBits^, tempBitmap.bmiHeader.biWidth * tempBitmap.bmiHeader.biHeight * 3, 255);
for y := 0 to tempBitmap.bmiHeader.biHeight - 1 do begin
for x := 0 to tempBitmap.bmiHeader.biWidth - 1 do begin
idx := y * tempBitmap.bmiHeader.biWidth + x;
q := Pointer(Integer(pvBits) + idx * 3);
q.rgbtBlue := Round(x * 255 / tempBitmap.bmiHeader.biWidth);
q.rgbtRed := Round(y * 255 / tempBitmap.bmiHeader.biHeight);
q.rgbtGreen := 55;
end;
end;
BitBlt(canvas.Handle, 0, 0, tempBitmap.bmiHeader.biWidth, tempBitmap.bmiHeader.biHeight, mDC, 0, 0, SRCCOPY);
hab mir den aufräum Code jetzt mal gespart
-> du setzt bei dir die Bildgroesse nicht: bmInfo.bmiHeader.biBitCount := tempBitmap.bmiHeader.biWidth * tempBitmap.bmiHeader.biHeight * tempBitmap.bmiHeader.biBitCount div 8
|
|
Zitat
|