2014-04-17 14 views
5

Tôi có một biểu đồ hình tròn, được tạo bằng TeeChart, trông rất đẹp trên hệ thống mà tôi phát triển, nhưng khi tôi chạy trên một máy khác, "chiếc bánh" xuất hiện thành hình bầu dục thay vì tròn.Điều gì có thể khiến biểu đồ hình tròn xuất hiện "bị đánh bóng"?

Tôi đảm bảo rằng thuộc tính Circled (phải đảm bảo rằng những gì được vẽ luôn là hình tròn chứ không phải hình elip) trên TPieSeries được đặt Đúng và không bị thay đổi ở bất kỳ đâu.

Tôi đã kiểm tra để đảm bảo rằng đây không phải là hiện vật có độ phân giải màn hình khác nhau. Nó không phải; hệ thống khác có cùng độ phân giải như hộp dev của tôi.

Hệ thống khác đã tắt Aero. Tôi đã thử nghiệm mọi thứ bằng cách tắt Aero trên hộp dev của tôi, và các bảng xếp hạng đã không đi ra squished.

Tại thời điểm này tôi về cơ bản không có ý tưởng. Có ai biết những gì có thể gây ra một biểu đồ hình tròn được thiết lập Circled = true để vẽ như một hình bầu dục chứ không phải là một vòng tròn?

Tốt:Good pie chart Xấu:Bad pie chart

Đây là cùng một chương trình chính xác, làm việc ra các dữ liệu chính xác cùng, ở độ phân giải màn hình cùng chính xác, trên hai máy tính khác nhau.

EDIT: Như đã thảo luận trong nhận xét, tôi đã kiểm tra điều này và thấy rằng cả hai hệ thống không chỉ có cùng độ phân giải, mà còn có cùng DPI.

+2

Tôi muốn kiểm tra những gì sẽ báo cáo máy tính khác cho LOGPIXELSX/LOGPIXELSY. –

+0

@SertacAkyuz: Đó là các hằng số được định nghĩa trong Windows.pas. Làm thế nào một hệ thống khác báo cáo các giá trị khác nhau khi đây là các hằng số được đặt trong đá tại thời gian biên dịch? –

+0

@Mason - Tất nhiên điều tôi muốn nói là gọi GetDeviceCaps. –

Trả lời

6

Sau khi một loạt gỡ lỗi và đào sâu vào vấn đề, hóa ra điều này xảy ra vì mã TeeChart đang gọi GetDeviceCaps với tham số HORIZSIZE và VERTSIZE, để xác định kích thước vật lý của pixel trên màn hình và điều chỉnh giới hạn của vòng tròn rect cho phù hợp. Thật không may, this call is only valid on a printer, and not on a display device, and it has known issues on Windows 7, cả hai hệ thống đang được đề cập đang sử dụng. Tôi đã báo cáo vấn đề với Steema. Hy vọng rằng họ có thể làm cho nó cố định.

CẬP NHẬT: Nhận phản hồi từ Steema, trong đó họ xác nhận sự cố và cung cấp giải pháp thay thế. Sao chép nó ở đây trong trường hợp bất kỳ ai khác gặp sự cố:

Một giải pháp thay thế cho phép bạn giải quyết vấn đề là tùy chỉnh chiều cao hình tròn để điều chỉnh thứ nguyên bạn cần.

Ví dụ:

procedure TForm9.Button1Click(Sender: TObject); 
var cHeight : Integer; 
begin 
    cHeight := Round((Chart1.ClientRect.Bottom - Chart1.ClientRect.Top) * 0.80); //80% 

    series1.CustomXRadius := cHeight div 2; 
    series1.CustomYRadius := series1.CustomXRadius; 
end; 
Các vấn đề liên quan