Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

Помогите с BitBlt !!!   Найти похожие ветки 

 
Demon[DZ]   (2003-03-25 18:14) [0]

Знатоки нужна помощь! Я написал свой компонент (DB Планеровщик) который евляется наследником от TDrawGrid. Он представляет собой таблицу из 2х столбцов и n-строк (в зависимости от кол-ва записей в таблице). В 1-ом столбце отображаются имена работников, а во 2-ом отображается занятость того или иного работника в виде прямоугольников. Ниже приведена процедура, которая выводит имена работников. Всё работает как надо, но вот я решил ускорить процесс прорисовки и начал ето далать с одной процедуры, наткнулся на грабли. Я уже запарился..., подскажите кто может!!
Заранее благодарен.

procedure TSLDBPlanner.DrawHeaderText(Sender: TObject; R: TRect; TxtType: SmallInt;
TextShift: ShortInt; Text1, Text2: string);
var H, W : integer;
DC : HDC;
Tmp : TBitMap;
begin
if (TxtType = 0) then Exit;

Tmp := TBitMap.Create;
H := R.Bottom-R.Top;
W := R.Right-R.Left;
with (Tmp.Canvas) do
begin
//Height := H;
//Width := W;
VertGradRect(R, $00E4E4E4, clWhite, Tmp.Canvas);
Brush.Style := bsClear;
Font.Name :="Times New Roman";
Font.Style := [fsBold];
Font.Size := 11;
case (TextShift) of
-1 : begin
Font.Color := HMousePressTextColor;
Pen.Color := HMousePressTextColor;
Brush.Color := $00B4B4B4;
RoundRect(R.Left+3, R.Top+3, R.Right-1, R.Bottom-1, 3, 3);
end;
0 : Font.Color := HTextColor;
1 : begin
Font.Color := HUnderMouseTextColor;
Pen.Color := HUnderMouseTextColor;
Brush.Color := $00DCCFC7;
RoundRect(R.Left+1, R.Top+1, R.Right-3, R.Bottom-3, 3, 3);
end;
end;

TextOut(R.Left+5-TextShift, R.Top+6-TextShift, Text1);
Font.Style := [];
end;
BitBlt(TDrawGrid(Sender).Handle, R.Left, R.Top, W, H, Tmp.Handle, 0, 0, SrcCopy);

Tmp.Free;
end;


 
Demon[DZ]   (2003-03-25 18:16) [1]

Ой забыл. Я решил использовать функцию BitBlt. о незнаю как на неё переделать мою процедуру....


 
MBo ©   (2003-03-25 18:18) [2]

>BitBlt(TDrawGrid(Sender).Handle
здесь должен быть дескриптор контекста (HDC), а не хэндл окна.
TDrawGrid(Sender).Canvas.Handle, видимо


 
icWasya ©   (2003-03-25 18:34) [3]

во первых почему закоментировано
//Height := H;
//Width := W;


во вторых если рисуешь на канве битмапа то наверно нужно вместо
RoundRect(R.Left+3, R.Top+3, R.Right-1, R.Bottom-1, 3, 3);
писать
RoundRect(3, 3, W-1, W-1, 3, 3);
ну и аналогично ещё в двух строчках


 
Demon[DZ]   (2003-03-25 18:55) [4]

Спасибо всеммм. Получилось!! Блин были такие глупые ошибки :))
Спасибо ещё раз всем!



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
6-19735
_MAD_
2003-02-08 23:31
2003.04.07
TIdTCPServer и TServerSocket


14-19853
Val
2003-03-21 10:04
2003.04.07
Скажи спасибо армии США!


14-19863
REA
2003-03-21 15:30
2003.04.07
Оптимизатор и векторизатор


14-19803
NetBreaker666
2003-03-19 19:11
2003.04.07
Слабо ? В. Цой.


14-19781
Vint
2003-03-19 14:19
2003.04.07
Прикол всем любителям Буша !