Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.07;
Скачать: [xml.tar.bz2];

Вниз

Помогите с 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
14-19785
Феликс
2003-03-19 01:04
2003.04.07
Почему?


4-19924
migaikin
2003-02-08 15:24
2003.04.07
ресурсы GDI


4-19911
AlexSW
2003-02-06 11:44
2003.04.07
Эмуляция нажатия 2-х клавиш одновремкнно.


1-19635
lightix
2003-03-25 15:55
2003.04.07
Как скопировать файл?


14-19849
Vlad Oshin
2003-03-20 11:45
2003.04.07
причины зависания службы MSGSRV32?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский