Текущий архив: 2008.10.19;
Скачать: CL | DM;
ВнизЭффекты на висте. Какие будут мнения? Найти похожие ветки
← →
Darvin (2008-08-27 11:48) [0]Создаю проект. Кидаю на форму PainBox, обрабатываю его событие OnPaint, в обработчике пишу следующее:
procedure TForm1.pbDrawPaint(Sender: TObject);
var
I, J : Integer;
begin
for I:=1 to pbDraw.ClientHeight - 1 do begin
if (I mod 10) = 0 then begin
for J:=0 to pbDraw.ClientWidth - 1 do begin
pbDraw.Canvas.Pixels[J, I] := clBlack;
end;
end;
end;
end;
Вообщем, выделить черным каждую десятую линию через Pixels (принципиально! хотя и не оптимально, естественно).
Теперь эффект. В теме Windows Vista все прекрасно работает, а в стилеКлассическая
рисует пунктиром, шириной 256 точек, как будто координата X задается байтом. По Y таких эффектов нет.
Смотрю реализацию SetPixel, идет обращение к API:procedure TCanvas.SetPixel(X, Y: Integer; Value: TColor);
begin
Changing;
RequiredState([csHandleValid, csPenValid]);
Windows.SetPixel(FHandle, X, Y, ColorToRGB(Value));
Changed;
end;
Это что, глюк Windows или я туплю?
Да, это все на Delphi7.
← →
han_malign © (2008-08-27 14:06) [1]if(GetMapMode(pbDraw.Canvas.Handle) = MM_TEXT)then ShowMessage("Глюк Windows");
а если нет - то разбирайся, начиная с Get/SetMapMode...
← →
han_malign © (2008-08-27 14:17) [2]хотя вряд ли, скорее стоит вспомнить о TFT мониторе на D-Sub интерфейсе...
Кажется для тем Vista другой режим(DirectX) пользует.
Для начала стоит в Классическом стиле калибровку монитора сделать.
← →
Darvin (2008-08-27 14:30) [3]Спасибо, попробую
← →
Darvin (2008-08-27 14:36) [4]Хотя - это не критично. Вот так работает:
procedure TForm1.pbDrawPaint(Sender: TObject);
var
I, J : Integer;
begin
for I:=1 to pbDraw.ClientHeight - 1 do begin
if (I mod 10) = 0 then begin
pbDraw.Canvas.MoveTo(0, I);
pbDraw.Canvas.LineTo(Width-1, I);
end;
end;
end;
← →
tesseract © (2008-08-27 15:35) [5]
> pbDraw.Canvas.Pixels[J, I] := clBlack;
Так лучше не делать, это сильно тормозной изврат. Особенно будучи запихнутый в OnPaint.
← →
ЛшдлуттнСфе (2008-08-27 16:07) [6]
> Эффекты на висте. Какие будут мнения?
Они там есть и много. И большинство с графикой совершенно не связаны.
← →
Darvin (2008-08-27 16:36) [7]>tesseract © (27.08.08 15:35) [5]
Внимательно читай пост 0:
линию через Pixels (принципиально! хотя и не оптимально, естественно).
Я просто заметил эффект и вынес на обсуждение...
Сделано совсем по другому
Страницы: 1 вся ветка
Текущий архив: 2008.10.19;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.006 c