我有一个用TeeChart创建的饼图,它在我开发的系统上看起来很好,但是当我在另一台机器上运行它时,"馅饼"出来都被压成椭圆形而不是圆形.
我确保该Circled属性(应确保绘制的内容始终是圆形,而不是椭圆形)在TPieSeries设置为True并且不会在任何地方更改.
我检查确保这不是不同屏幕分辨率的工件.不是; 另一个系统与我的开发盒的分辨率相同.
另一个系统关闭了Aero.我通过在我的开发盒上关闭Aero测试了一些东西,并且图表没有被压扁.
在这一点上,我基本上没有想法.有谁知道什么可以导致饼图被设置Circled = true为绘制为椭圆形而不是圆形?
好:
坏: 
这是完全相同的程序,在两台不同的计算机上以完全相同的屏幕分辨率处理完全相同的数据.
编辑: 正如评论中所讨论的,我对此进行了测试,发现两个系统不仅具有相同的分辨率,而且具有相同的DPI.
我可以使用TeeChart在Delphi中创建堆叠条形图.这是使用循环中添加的值和系列.我更喜欢通过使用查询作为数据源来创建此图表,而不必将每个条形图添加为循环内的单独系列.有没有更好的方法来做到这一点,或者我应该关注的其他类型的图表?该数据是来自井核样本的岩石类型的横截面.数据集包含每个深度和岩石类型测量的记录.它显示为岩石类型的单个垂直列,就像核心样本一样.
+----+
| | record 1 - depth1, rock type 1
| |
+----+
| |
| |
| | record 2 - depth2, rock type 2
| |
+----+
| | record 3 - depth3, rock type 3
+----+
procedure TForm128.GenerateLithologyChart;
var
LSeries: TBarSeries;
i : integer;
LastBot : double;
procedure AddRockSeries(depth : double; col : TColor);
begin
LSeries := TBarSeries.Create(LithologyChart);
LithologyChart.AddSeries(LSeries);
LSeries.AddBar(0, '', clBlue);
if col=clNone then
LSeries.AddNullXY(0,depth,'')
else
LSeries.AddXY(0,depth,'',col);
LSeries.Marks.Visible := False;
LSeries.MultiBar := mbStacked;
LSeries.CustomBarWidth := …Run Code Online (Sandbox Code Playgroud) 我正在使用当前的 Delphi 10.3 版本以及当前的 TeeChart FMX 2018.26 版本。Android 设备是搭载 Android 9 的 onePlus 6T。不幸的是,目前正在显示“检测到的 API 兼容性问题”。我使用了一个全新的项目,只有一个简单的 TeeChart 图表,所以我可以排除其他不兼容性。
有什么可用的解决方案吗?
你能帮我创建区域图表,图表的部分(顶部)有其他颜色吗?我想指出,任何数值的值都是至关重要的.
这是一个截图:

我创建了两个面积图,但正如您所看到的,每个图表都有自己的左轴.最好的解决方案是将图表着色到特定值之上.
如何在TChart上直接使用GDI +旋转和绘制transperent PNG图像?
目前我将PNG图像加载到位图并使用两个位图进行GDI +旋转(它工作得非常快)然后使目标位图透明并在TChart的画布上绘制(当透明度打开时它会很慢).
procedure TPitchDisplay._chartAfterDraw(Sender: TObject);
var
c: TCanvas3D;
pw, ph: Integer;
r: TRect;
bmp: TBitmap;
rotAngle: Integer;
begin
_setKnobBounds();
c := _chart.Canvas;
_drawCircle(c, _knob.CenterPoint.X, _knob.CenterPoint.Y, Round(_knob.YRadius * 0.9));
c.StretchDrawQuality := sqHigh;
pw := 450;
ph := Round((pw / _shipBitmap.Width) * _shipBitmap.Height);
r.Left := _chart.ChartXCenter - pw div 2;
r.Top := Round(_chart.Height / 3);
r.Width := pw;
r.Height := ph;
//Draw water
c.StretchDraw(Rect(0, r.Top + Round(ph / 1.5), _chart.Width, _chart.Height), _waterBitmap);
//Draw rotated ship over it
bmp := …Run Code Online (Sandbox Code Playgroud) 我使用ClickOnce安装了使用TeeChart ActiveX(用于制图的COM组件)的Windows应用程序.
如果我使用regsvr32 teechart8.ocx手动注册TeeChart,我的应用程序工作正常.但我想要,我需要使用ClickOnce安装应用程序.
我怎样才能做到这一点?
如何在运行时更改 Delphi 中 TChart 中线条的颜色?例如,我将如何更改以下颜色:
图1.系列[a]。
帖子:我已经接受了答案,但它对我不起作用.我将发布一个新问题,强调Delphi 7.感谢所有给出一些好的意见的人
我在一小时内以一秒的间隔进行测量.
我有一个先前的问题,它需要45秒来更新TStringGrid并设法将其降低到"比眼睛看得更快".部分是通过移动循环的一些计算和数据库相关的功能,但是 - 令我惊讶的是 - 真正产生差异的变化是在循环之前将strindgrid的rowCount设置为3600而不是在循环内增加它.
现在我和TChart有类似的问题.也许如果我尝试预先分配图表?所以,我可以Chart1.Series[0].Count := 3600,但是我不能使用AddXy()或者Add(),那么我将如何明确地设置系列值?
我有一个非常简单的图表,在y轴上有浮点数,在x轴上有小时:秒
任何人都可以帮忙,或建议另一种方法来加快图表绘制速度?
更新:有几个人建议使用TFastLineSeries,但我不知道如何使用.
啊啊 - 双击图表,显示所有系列,选择一个并单击更改
我正在使用两个TChart组件,并希望为它们进行同步缩放.我发现TChart有ZoomRect程序用于放大图表上的所需矩形,但我没有找到任何方法从另一个图表中读取此缩放矩形的坐标.
这里有一些伪代码可以进一步说明:
MainChart.OnZoom := HandleZooming;
...
procedure HandleZooming(Sender: TObject);
var
zoomRectangle: TRect;
begin
zoomRectangle := MainChart.?????;
SecondaryChart.ZoomRect(zoomRectangle);
end;
Run Code Online (Sandbox Code Playgroud)
我正在使用Delphi XE.
我正在使用TChart一组TFastLineSeries在运行时创建的。
是否可以将系列的一半使用左轴作为 Y 轴,另一半使用右轴,每个轴都有单独的最小值/最大值?
\n\n我没有看到可以将轴分配给系列的属性,反之亦然。
\n\nprocedure TForm1.FormShow(Sender: TObject);\nvar\n sv: TSoundingVol;\n i: Integer;\n serT0, serT05, serUllage, serVCG: TChartSeries;\nbegin\n sv := TSoundingVol.Create();\n try\n Chart1.ClearChart();\n Chart1.View3D := False;\n Chart1.Legend.CheckBoxes := True;\n\n Chart1.Axes.Bottom.Title.Text := 'Sounding, m';\n Chart1.Axes.Left.Title.Text := 'Volume, m\xc2\xb3';\n\n serT0 := TFastLineSeries.Create(Chart1);\n serT0.Title := 'At Trim 0 m';\n\n serT05 := TFastLineSeries.Create(Chart1);\n serT05.Title := 'At Trim +0,5 m (by bow)';\n\n //Following series should use the right axis and own scaling\n\n serUllage := TFastLineSeries.Create(Chart1);\n serUllage.Title := 'Ullage (m)';\n\n …Run Code Online (Sandbox Code Playgroud)