|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Progressbar поверх другого компонента
Здравствуйте уважаемые коллеги Улыбающийся
У меня возникла проблема, поставили задачу: во время загрузки данных StringGrid сделать светлым тоном (типа осветлить) и по центру вывести ProgressBar. Может ктото сталкивался с подобной задачей? А то если с прогресбаром вродь понятно, то как осветлить таблицу я себе не представляю. Спасибо. |
#2
|
||||
|
||||
Нестандартный вариант.
Взять на канве грида нарисовать белый прямоугольник. Где-то на сайте есть исходник для рисования фигур, используя прозрачность. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
С рисованием на канве грида. Пробовал рисовать линию - рисуется только на ячейках, если размер занимаемый ячейками меньше размера грида, то рисуется только на ячейках.
|
#4
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию Последний раз редактировалось 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) — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#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 перерисовывает грид
|