JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

SaveToBitmapFile

- метод компонента TChart
Компонент TChart
Сохраняет изображение диаграммы в указанном файле формата BITMAP.
Синтаксис
chrObj.SaveToBitmapFile(
  fileName
);

Параметры
Параметр Тип Описание
fileName String имя файла
Возвращаемое значение
Нет
Пример (JS+)
var tab=20;

// Главная форма
frm=new TForm();
frm.Caption="JS+ - метод компонента TChart SaveToBitmapFile";
frm.Width =900;
frm.Height=675;

var srs_List=new Array(
"TAreaSeries",
"TArrowSeries",
"TBarSeries",
"TBubbleSeries",
"TGanttSeries",
"TFastLineSeries",
"TLineSeries",
"TPointSeries",
"TPieSeries"
);

var data_List=new Array(
"10|болты",
"40|винты",
"20|гайки",
"60|гвозди",
"40|дюбели",
"80|саморезы",
"60|шайбы",
"100|шурупы"
);

// Строка состояния
stb=new TStatusBar(frm);

// Кнопка Сохранить
with (bt1=new TButton(frm)) {
  Caption="Сохранить";
  Top=stb.Top-Height-tab;
  Hint="Сохранить изображение BMP в файл";
  ShowHint=true;
  strTag="SAVE";
  OnClick=btn_Click;
}

// Кнопка Копировать
with (bt2=new TButton(frm)) {
  Caption="Копировать";
  Width=frm.TextWidth(Caption)+tab;
  Height=bt1.Height;
  Top=bt1.Top;
  Hint="Копировать изображение BMP в Буфер обмена";
  ShowHint=true;
  strTag="COPY";
  OnClick=btn_Click;
}

bt1.Width=bt2.Width;
bt1.Left=frm.ClientWidth-bt1.Width-tab;
bt2.Left=bt1.Left-bt2.Width-tab;

// Панель закладок
pgc=new TPageControl(frm);
pgc.SetBounds(tab,tab,frm.ClientWidth-tab*2,bt1.Top-tab*2);
pgc.OnChange=pgc_Change;

// Закладки
for (i=0,ni=srs_List.length;i<ni;i++) {
  srs_id=(srs_str=srs_List[i]).replace("T","").replace("Series","");
  with (tsh=new TTabSheet(pgc)) {
    Caption=srs_id;
    Color=clWhite;
    strTag=srs_str;
  }

  // TChart
  with (chr=new TChart(tsh)) {
    SetBounds(15,15,tsh.ClientWidth-30,tsh.ClientHeight-30);
    MarginTop=MarginBottom=5;
    MarginRight=15;
    tsh.cmpTag=chr;

    // Верхний заголовок
    with (Title) {
      Caption="Серия "+srs_str;
      Font.Style=fsBold;
      VertMargin=20;
      Visible=true;
    }

    // Нижний заголовок
    with (chr.Foot) {
      Caption="Номенклатура";
      Visible=true;
    }
  }

  // Левая ось
  with (chr.LeftAxis) {
    with (Title){
      Caption="Количество, шт.";
      Font.Color=srs_clr=clBlue;
    }
    Visible=true;
  }

  // Нижняя ось
  with (chr.BottomAxis) {
    MinorTickLength=0;
    Visible=true;
  }

  // Серия
  srs=eval("new "+srs_str+"(chr)");
  srs.Color=srs_clr;

  switch (srs_id) {
    case "Area":
    srs.AreaBrush=bsDiagCross;
    // Вертикальные линии
    with (srs.AreaLinesPen) {
      Color=clLtGray;
      Visible=true;
    }
    break;

    case "Arrow":
    srs.ArrowHeight=srs.ArrowWidth=10;
    case "Bar":
    chr.BottomAxis.Labels=false;
    break;

    case "FastLine":
    with (srs.Marks) {
      ShapeStyle=fosEllipse;
      ArrowLength=10;
      Style=smsValue;
      Visible=true;
    }
    srs.OnClick=srs_Click;
    srs.OnDblClick=srs_DblClick;
    break;

    case "Pie":
    srs.DonutPercent=40;
    chr.Foot.Visible=false;
    case "Gantt":
    chr.LeftAxis.Labels=
    chr.BottomAxis.Labels=false;
    break;

    case "Point":
    case "Line" :
    with (srs.Pointer) {
      Style=psCircle;
      Visible=true;
    }
    with (srs.Marks) {
      ArrowLength=15;
      Visible=true;
    }
    srs.OnGetMarkText=srs_GetMarkText;
    srs.OnClickPointer=srs_ClickPointer;
  }

  // Заполнение серии данными
  srs.BeginUpdate();
  for (j=0,k=1,nj=data_List.length;j<nj;k++,j++) {
    pnt_lst=data_List[j].split("|");
    y=parseFloat(pnt_lst[0]);
    switch (srs_id) {
      case "Arrow" : srs.AddArrow (nj/2,45,k,y); break;
      case "Bubble": srs.AddBubble(k,y,9,pnt_lst[1]); break;
      case "Gantt" : srs.AddGantt (k-0.5,k+0.5,y,pnt_lst[1]); break;
            default: srs.AddXY(k,y,pnt_lst[1]);
    }
  }
  srs.EndUpdate();

  // Масштабирование осей
  with (chr.LeftAxis) {
    Automatic=false;
    Minimum=0;
    Maximum=srs.MaxYValue();
  }
  with (chr.BottomAxis) {
    Automatic=false;
    Minimum=0;
    Maximum=srs.MaxXValue()+1;
  }
}

// Начальная серия
pgc.ActivePageIndex=2;// TBarSeries
pgc_Change(pgc);

frm.ShowModal();

// Обработчик события TButton::OnClick
function btn_Click(btn)
{
  var dlg,opr=btn.strTag,chr=pgc.ActivePage.cmpTag;

  switch (opr) {
    case "COPY":
    chr.CopyToClipboardBitmap();
    stb.SimpleText=" Изображение скопировано в Буфер обмена";
    break;
                 
    case "SAVE":
    with (dlg=new TSavePictureDialog(frm)) {
      Title="Сохранение изображения BMP в файл";
      Options+=ofShareAware+ofCreatePrompt+ofOverwritePrompt;
      Filter="BMP-файлы (*.bmp)|*.bmp|Все файлы (*.*)|*.*";
      DefaultExt="bmp";
      InitialDir=JSPlus.TempDir;
      FileName="ChartImg.bmp";
    }

    if (dlg.Execute()) {
      chr.SaveToBitmapFile(dlg.FileName);
      stb.SimpleText=" Сохранен файл: "+dlg.FileName;
    }
    dlg.Delete();
  }
}

// Обработчик события T[Line,Point]Series::OnGetMarkText
function srs_GetMarkText(srs,i,txt)
{
  txt.Value="Метка №"+(i+1);
}

// Обработчик события T[Line,Point]Series::OnClickPointer
function srs_ClickPointer(srs,i,x,y)
{
  stb.SimpleText=" Клик на указателе: №"+(i+1)+" ("+x+":"+y+")";
}

// Обработчик события TFastLineSeries::OnClick
function srs_Click(srs,i,ms_button,shift,x,y)
{
  stb.SimpleText=" Клик на серии: №"+(i+1)+" ("+x+":"+y+")";
}

// Обработчик события TFastLineSeries::OnDblClick
function srs_DblClick(srs,i,m_button,shift,x,y)
{
  stb.SimpleText=" 2-клик на серии: №"+(i+1)+" ("+x+":"+y+")";
}

// Обработчик события TPageControl::OnChange
function pgc_Change(pgc)
{
  var tsh=pgc.Pages[pgc.ActivePageIndex];

  stb.SimpleText=" Выбрана серия "+tsh.strTag;
}
Совместимость
C++ Builder/Delphi
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/Component/TChart/Method/SaveToBitmapFile.htm
© 2024,