![]() |
|
#1
|
|||
|
|||
![]() Ума не приложу как это еще оптимизировать. Эта процедура выводит изображение с субпиксельным рендерингом, что дает лучшее качество картинки на LCD мониторе нежели обычный антиалиазинг. Все замечательно только вот работает не быстро.
Код:
type TbyteArray = array[0..1000] of byte; PbyteArray = ^TbyteArray; procedure LCD7(ABitmap, BBitmap : TBitmap); var x, y, Width, Height : Integer; A, B : PbyteArray; begin Width := ABitmap.Width div 3 - 2; Height := ABitmap.Height - 1; for y:=0 to Height do begin A := ABitmap.Scanline[Y]; B := BBitmap.Scanline[Y]; for x:=0 to Width do begin B[2] := ( A[2] + A[14] ) shr 3 + ( A[5] + A[8 ] + A[11] ) shr 2; B[1] := ( A[4] + A[16] ) shr 3 + ( A[7] + A[10] + A[13] ) shr 2; B[0] := ( A[6] + A[18] ) shr 3 + ( A[9] + A[12] + A[15] ) shr 2; A:=@A[9]; B:=@B[3]; end; end; end; |