Я использую Delphi 7 и Delphix, чтобы иметь возможность рисовать и создавать поверхность для воспроизведения с пикселями.
так что в триггере кнопки я использую это:
for i:=1 to 100 do
for j:=1 to 100 do
dxdraw1.Surface.Pixels[i,j]:=250;
, где dxdraw1 - поверхность рисования.
Проблема в том, что это работает, но результат показывает, что после того, как я наведу другое окно над моей программой, как будто оно не обновляет область прямоугольника пикселями.
(я нажимаю кнопку, загрузка процессора на короткое время возрастает, и прямоугольник остается черным, пока я не наведу на другое окно.)
Также это медленно. Я где-то читал это:
»...
DXDraw.Surface.Canvas.Pixels[X,Y]:=clBlue;
DXDraw.Surface.Canvas.Release;
... "
и после этого:
»...
Просто помните, что эта функция очень медленная.
Он блокирует и разблокирует поверхность в каждом наборе пикселей ... не очень удобно.
PixelDX и TurboPixel не делают, вы вручную блокируете поверхность, делаете все
пиксельные операции, а затем разблокировать его .. в 1000 раз быстрее.
... "
Как использовать эти функции? Я не могу их найти (и я понятия не имею, так как я новичок в этом)?
Как сначала заблокировать, а затем разблокировать?
U P D A T E:
Хорошо, я использовал undelphix, но в прямоугольнике я не вижу результат, он все еще остается черным:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,j :integer;
begin
dxdraw1.Surface.Lock;
for i:=1 to 150 do
for j:=1 to 150 do
dxdraw1.Surface.Pixel[i,j]:=100;
dxdraw1.Surface.Unlock;
end;
U P D A T E 2:
Это работает, но происходит это странно: чтобы увидеть результат, мне нужно «спрятать» окно приложения под другим окном или программой и свернуть это окно, чтобы увидеть результат. Если я перемещу приложение, то результат исчезнет, и он останется пустым. Есть идеи?