Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.01.2013, 22:28   #11
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

А ты не могбы сделать так чтоб эти 4 квадратика не заполнялись ?
Изображения
Тип файла: png 5.png (28.2 Кб, 151 просмотров)
Gudzik11 вне форума Ответить с цитированием
Старый 09.01.2013, 22:33   #12
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

74-75 строки:
Код:
graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 126, 288 * ScrollBar1.Position / 100);
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 09.01.2013, 22:51   #13
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Круто спасибо .
Если можешь можешь ещё значок MUTE нарисовать .
чтоб если на кнопку нажимаешь появлялся значёк MUTE
Изображения
Тип файла: png 1357779000_mute 2.png (20.2 Кб, 148 просмотров)
Gudzik11 вне форума Ответить с цитированием
Старый 10.01.2013, 01:42   #14
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Что то не пойму в твоём коде всё работает я пробую приписать на Image
и поменять ScrollBar1 на TrackBar1 и всё ползунок TrackBar1 перестаёт двигать картинку . В чём причина ?
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, GDIPAPI, GDIPOBJ, StdCtrls, ComCtrls;

type
  TForm2 = class(TForm)
    Image1: TImage;
    TrackBar1: TTrackBar;
    ScrollBar1: TScrollBar;
    procedure FormCreate(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
var
  graphicsGDIPlus: TGPGraphics;
  FontFamily: TGPFontFamily;
  Font: TGPFont;
  pen: TGPPen;
  SolidBrush: TGPSolidBrush;
  GradientBrush: TGPLinearGradientBrush;
  pthGrBrush: TGPPathGradientBrush;
  path: TGPGraphicsPath;
  count, i: integer;
  colors: array [0 .. 9] of TGPColor;
  s: string;
  textrect: tgprectf;
  r1, r2, t: double;
 const
  r = 150;
  c = 20;
  points: array [0 .. 9] of Single = (0, 0.02, 0.02, 0.12, 0.12, 0.17, 0.25, 0.3, 0.3, 1);
begin
   r1 := (1 - points[3]) * r; // радиус внутреннего кпуга
  r2 := (1 - points[7]) * r;
  t := 0.5 * r;
  graphicsGDIPlus := TGPGraphics.Create(Image1.Canvas.Handle);
  graphicsGDIPlus.SetSmoothingMode(4);
  // внешний круг
  GradientBrush := TGPLinearGradientBrush.Create(makerect(-1, -1, 2 * r + 2,2 * r + 2), MakeColor(255, 200, 200, 200), MakeColor(255, 255, 255,255), LinearGradientModeVertical);
  graphicsGDIPlus.Fillellipse(GradientBrush, 0, 0, 2 * r, 2 * r);
  // темный круг под заполнением
  SolidBrush := TGPSolidBrush.Create(MakeColor(255, 180, 180, 180));
  graphicsGDIPlus.Fillellipse(SolidBrush, r - r1, r - r1, 2 * r1, 2 * r1);
  // белые метки
  pen := TGPPen.Create(MakeColor(255, 200, 200, 200), 2);
  graphicsGDIPlus.TranslateTransform(r, r);
  for i := 0 to c - 1 do
  begin
    graphicsGDIPlus.RotateTransform(360 / c);
    graphicsGDIPlus.DrawLine(pen, 0, 0, r1, 0);
    end;
   graphicsGDIPlus.ResetTransform;
  // заполнение
  GradientBrush.setlinearcolors(MakeColor(255, 80, 200, 250),MakeColor(255, 20, 100, 200));
  //graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 90,  360 * ScrollBar1.Position / 100); //полный круг
  graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 126, 288 * TrackBar1.Position / 100);// не полный круг
  // тени
  path := TGPGraphicsPath.Create;
  path.AddEllipse(0, 0, 2 * r, 2 * r);
  pthGrBrush := TGPPathGradientBrush.Create(path);
  pthGrBrush.SetCenterColor(MakeColor(0, 0, 0, 0));
  pthGrBrush.SetCenterPoint(MakePoint(r, r));
  count := 10;
  colors[0] := MakeColor(0, 0, 0, 0);
  colors[1] := MakeColor(50, 10, 10, 10);
  colors[2] := MakeColor(0, 0, 0, 0);
  colors[3] := MakeColor(0, 0, 0, 0);
  colors[4] := MakeColor(100, 10, 10, 10);
  colors[5] := MakeColor(0, 0, 0, 0);
  colors[6] := MakeColor(0, 0, 0, 0);
  colors[7] := MakeColor(100, 10, 10, 10);
  colors[8] := MakeColor(0, 0, 0, 0);
  colors[9] := MakeColor(0, 0, 0, 0);
  pthGrBrush.SetInterpolationColors(@colors, @points, count);
  graphicsGDIPlus.Fillellipse(pthGrBrush, 0, 0, 2 * r, 2 * r);
  // внутренний круг
  GradientBrush.setlinearcolors(MakeColor(255, 255, 255, 255),
    MakeColor(255, 220, 220, 220));
  graphicsGDIPlus.Fillellipse(GradientBrush, r - r2, r - r2, 2 * r2, 2 * r2);
  // текст
  FontFamily := TGPFontFamily.Create('Agency FB');
  Font := TGPFont.Create(FontFamily, t, FontStyleBold, UnitWorld);
  SolidBrush.SetColor(MakeColor(255, 160, 160, 160));
  s := inttostr(ScrollBar1.Position) + '%';
  graphicsGDIPlus.MeasureString(s, -1, Font, MakePoint(0.0, 0),
    tgpStringFormat.GenericDefault, &textrect);
  graphicsGDIPlus.DrawString(s, -1, Font,
    MakePoint(1.0 * r - textrect.Width / 2, r - textrect.Height / 2),
    SolidBrush);
  pen.Free;
  SolidBrush.Free;
  GradientBrush.Free;
  pthGrBrush.Free;
  path.Free;
  FontFamily.Free;
  Font.Free;
  graphicsGDIPlus.Free;

end;

procedure TForm2.TrackBar1Change(Sender: TObject);
begin
  repaint;
end;

end.
Gudzik11 вне форума Ответить с цитированием
Старый 10.01.2013, 01:57   #15
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А чем PaintBox хуже?
Код:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, ComCtrls, GDIPAPI, GDIPOBJ;

type
  TForm2 = class(TForm)
    TrackBar1: TTrackBar;
    Image1: TImage;
    procedure TrackBar1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.TrackBar1Change(Sender: TObject);
var
  graphicsGDIPlus: TGPGraphics;
  FontFamily: TGPFontFamily;
  Font: TGPFont;
  pen: TGPPen;
  SolidBrush: TGPSolidBrush;
  GradientBrush: TGPLinearGradientBrush;
  pthGrBrush: TGPPathGradientBrush;
  path: TGPGraphicsPath;
  count, i: integer;
  colors: array [0 .. 9] of TGPColor;
  s: string;
  textrect: tgprectf;
  r1, r2, t: double;
const
  r = 150;
  c = 20;
  points: array [0 .. 9] of Single = (0, 0.02, 0.02, 0.12, 0.12, 0.17, 0.25,
    0.3, 0.3, 1);
begin
  r1 := (1 - points[3]) * r; // радиус внутреннего кпуга
  r2 := (1 - points[7]) * r;
  t := 0.5 * r;
  graphicsGDIPlus := TGPGraphics.Create(Image1.Canvas.Handle);
  graphicsGDIPlus.SetSmoothingMode(4);
  // внешний круг
  GradientBrush := TGPLinearGradientBrush.Create(makerect(-1, -1, 2 * r + 2,
      2 * r + 2), MakeColor(255, 200, 200, 200), MakeColor(255, 255, 255,
      255), LinearGradientModeVertical);
  graphicsGDIPlus.Fillellipse(GradientBrush, 0, 0, 2 * r, 2 * r);
  // темный круг под заполнением
  SolidBrush := TGPSolidBrush.Create(MakeColor(255, 180, 180, 180));
  graphicsGDIPlus.Fillellipse(SolidBrush, r - r1, r - r1, 2 * r1, 2 * r1);
  // белые метки
  pen := TGPPen.Create(MakeColor(255, 200, 200, 200), 2);
  graphicsGDIPlus.TranslateTransform(r, r);
  for i := 0 to c - 1 do
  begin
    graphicsGDIPlus.RotateTransform(360 / c);
    graphicsGDIPlus.DrawLine(pen, 0, 0, r1, 0);
  end;
  graphicsGDIPlus.ResetTransform;
  // заполнение
  GradientBrush.setlinearcolors(MakeColor(255, 80, 200, 250),
    MakeColor(255, 20, 100, 200));
  // graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 90,  360 * ScrollBar1.Position / 100); //полный круг
  graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 126,
    288 * TrackBar1.Position / 100); // не полный круг
  // тени
  path := TGPGraphicsPath.Create;
  path.AddEllipse(0, 0, 2 * r, 2 * r);
  pthGrBrush := TGPPathGradientBrush.Create(path);
  pthGrBrush.SetCenterColor(MakeColor(0, 0, 0, 0));
  pthGrBrush.SetCenterPoint(MakePoint(r, r));
  count := 10;
  colors[0] := MakeColor(0, 0, 0, 0);
  colors[1] := MakeColor(50, 10, 10, 10);
  colors[2] := MakeColor(0, 0, 0, 0);
  colors[3] := MakeColor(0, 0, 0, 0);
  colors[4] := MakeColor(100, 10, 10, 10);
  colors[5] := MakeColor(0, 0, 0, 0);
  colors[6] := MakeColor(0, 0, 0, 0);
  colors[7] := MakeColor(100, 10, 10, 10);
  colors[8] := MakeColor(0, 0, 0, 0);
  colors[9] := MakeColor(0, 0, 0, 0);
  pthGrBrush.SetInterpolationColors(@colors, @points, count);
  graphicsGDIPlus.Fillellipse(pthGrBrush, 0, 0, 2 * r, 2 * r);
  // внутренний круг
  GradientBrush.setlinearcolors(MakeColor(255, 255, 255, 255),
    MakeColor(255, 220, 220, 220));
  graphicsGDIPlus.Fillellipse(GradientBrush, r - r2, r - r2, 2 * r2, 2 * r2);
  // текст
  FontFamily := TGPFontFamily.Create('Agency FB');
  Font := TGPFont.Create(FontFamily, t, FontStyleBold, UnitWorld);
  SolidBrush.SetColor(MakeColor(255, 160, 160, 160));
  s := inttostr(TrackBar1.Position) + '%';
  graphicsGDIPlus.MeasureString(s, -1, Font, MakePoint(0.0, 0),
    tgpStringFormat.GenericDefault, &textrect);
  graphicsGDIPlus.DrawString(s, -1, Font,
    MakePoint(1.0 * r - textrect.Width / 2, r - textrect.Height / 2),
    SolidBrush);
  pen.Free;
  SolidBrush.Free;
  GradientBrush.Free;
  pthGrBrush.Free;
  path.Free;
  FontFamily.Free;
  Font.Free;
  graphicsGDIPlus.Free;
  repaint;
end;

end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.01.2013, 10:52   #16
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

В PaintBox нельзя прозрачность по цвету сделать.
Скажи а если у меня TrackBar1 на другой форме будет тоже не будет работать?
Gudzik11 вне форума Ответить с цитированием
Старый 10.01.2013, 12:29   #17
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

По идее, будет, просто нужно указать что-то вида form3.trackbar1.
Вложения
Тип файла: zip mute.zip (815.7 Кб, 29 просмотров)
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 10.01.2013 в 15:12.
BDA вне форума Ответить с цитированием
Старый 11.01.2013, 14:15   #18
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Ты мастер в графике спасибо.
Извини за наглость можешь ещё сделать чтоб ползунок закрашивался не сплошным синим а по секторам чтоб серые полосочки оставались видны .
Gudzik11 вне форума Ответить с цитированием
Старый 11.01.2013, 14:19   #19
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
  // заполнение
  GradientBrush.setlinearcolors(MakeColor(255, 80, 200, 250),MakeColor(255, 20, 100, 200));
  //graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 90,  360 * ScrollBar1.Position / 100); //полный круг
  graphicsGDIPlus.FillPie(GradientBrush, r - r1, r - r1, 2 * r1, 2 * r1, 126, 288 * TrackBar1.Position / 100);// не полный круг
// белые метки
  pen := TGPPen.Create(MakeColor(255, 200, 200, 200), 2);
  graphicsGDIPlus.TranslateTransform(r, r);
  for i := 0 to c - 1 do
  begin
    graphicsGDIPlus.RotateTransform(360 / c);
    graphicsGDIPlus.DrawLine(pen, 0, 0, r1, 0);
    end;
   graphicsGDIPlus.ResetTransform;
Просто поменять местами заполнение и вывод меток.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.01.2013, 18:40   #20
Gudzik11
Форумчанин
 
Регистрация: 20.10.2011
Сообщений: 138
По умолчанию

Не при движении TrackBar1 полоса заполняется сплошным синим цветом перекрывая полоски
Gudzik11 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Прогресс бар для Three.js dem66 JavaScript, Ajax 3 05.07.2012 15:01
Типа Прогресс бар! WizarD.89 Microsoft Office Excel 3 24.04.2011 14:20
Цикл и прогресс-бар А)-(дрей Microsoft Office Excel 4 17.03.2011 18:13
список и прогресс бар Temka Общие вопросы Delphi 1 02.06.2009 12:20