Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.016 c
15-1220108908
savyhinst
2008-08-30 19:08
2008.10.19
IniFiles nouses


3-1208256118
webpauk
2008-04-15 14:41
2008.10.19
Добавление в таблицу


2-1221136125
DJones
2008-09-11 16:28
2008.10.19
Использование многострочных hint в Дельфи


2-1221057756
deras
2008-09-10 18:42
2008.10.19
Работа с датой


15-1220026817
Nic
2008-08-29 20:20
2008.10.19
Ветка проектирования