![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые коллеги Улыбающийся
У меня возникла проблема, поставили задачу: во время загрузки данных StringGrid сделать светлым тоном (типа осветлить) и по центру вывести ProgressBar. Может ктото сталкивался с подобной задачей? А то если с прогресбаром вродь понятно, то как осветлить таблицу я себе не представляю. Спасибо. |
|
#2
|
||||
|
||||
|
Нестандартный вариант.
Взять на канве грида нарисовать белый прямоугольник. Где-то на сайте есть исходник для рисования фигур, используя прозрачность. |
|
#3
|
|||
|
|||
|
С рисованием на канве грида. Пробовал рисовать линию - рисуется только на ячейках, если размер занимаемый ячейками меньше размера грида, то рисуется только на ячейках.
|
|
#4
|
||||
|
||||
|
Цитата:
Последний раз редактировалось M.A.D.M.A.N., 14.03.2011 в 17:32. |
|
#5
|
|||
|
|||
|
вот так отлично закрашивает весь грид:
Код:
var ARect: TRect; ACanvas: TCanvas; begin ARect.Left := 0; ARect.Top := 0; ARect.Right := StringGrid1.Width; ARect.Bottom := StringGrid1.Height; ACanvas := TCanvas.Create; ACanvas.Handle := StringGrid1.Canvas.Handle; ACanvas.Rectangle(ARect); ACanvas.Free; end; |
|
#6
|
|||
|
|||
|
Но вот как сделать квадратик полупрозрачным?
|
|
#7
|
|||
|
|||
|
щас подумаем
![]() |
|
#8
|
|||
|
|||
|
самый просто способ, это получить Bitmap с грида, повысить на нём яркость и наложить его обратно на грид ))
|
|
#9
|
|||
|
|||
|
Не поделитесь исходником как это сделать? А то я в графике не очень силен. Заранее спасибо!
|
|
#10
|
|||
|
|||
|
щас напишу и поделюсь ))) яж только что это придумал ))))
|
|
#11
|
||||
|
||||
|
f(x,y)=c*ln(1+p(x,y))
с - константа. p(x,y) - значение каналов (RGB) |
|
#12
|
|||
|
|||
|
Спасибо, попробую. Действительно прямоугольник рисуется отлично.
Но вот при использовании AlphaSkin не рисуется почемуто ( |
|
#13
|
|||
|
|||
|
Дауж, похоже что при использовании альфа скинов ничего не получится. Отрисовка таблицы производится гдето внутри альфаскина.
|
|
#14
|
|||
|
|||
|
как-то вот так примитивно:
Код:
function Bright(Color: TColor; BrightPercent: Byte): TColor;
var
r, g, b: Byte;
begin
Color := ColorToRGB(Color);
r := GetRValue(Color);
g := GetGValue(Color);
b := GetBValue(Color);
r := r + muldiv(255 - r, BrightPercent, 100);
g := g + muldiv(255 - g, BrightPercent, 100);
b := b + muldiv(255 - b, BrightPercent, 100);
Result := RGB(r, g, b);
end;
procedure BrightBmp(Bmp: TBitmap; BrightPercent: byte);
var
x,y: integer;
col: TColor;
begin
for y:=0 to Bmp.Height do
for x:=0 to Bmp.Width do
begin
col := Bmp.Canvas.Pixels[x,y];
Bmp.Canvas.Pixels[x,y] := Bright(col,BrightPercent);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Bmp: TBitmap;
begin
StringGrid1.Enabled := False;
Bmp := TBitmap.Create;
Bmp.Width := StringGrid1.Width;
Bmp.Height := StringGrid1.Height;
Bmp.Canvas.CopyRect(Bmp.Canvas.ClipRect,StringGrid1.Canvas,StringGrid1.Canvas.ClipRect);
BrightBmp(Bmp,50);
StringGrid1.Canvas.CopyRect(StringGrid1.Canvas.ClipRect,Bmp.Canvas,Bmp.Canvas.ClipRect);
Bmp.Free;
end;для возвращения исходного состояния: Код:
StringGrid1.Enabled := True; StringGrid1.Repaint; Последний раз редактировалось Assistant, 14.03.2011 в 18:03. |
|
#15
|
|||
|
|||
|
Спасибо, то что надо! Осталось только найти когда SkinManager перерисовывает грид
|