2010-05-19 9 views
0

2 차원 선 그리기 지점으로 표시하려는 데이터 목록 = 62, 76, 80, 72, 71, 75, 77이 있습니다. 내 Wpf 응용 프로그램에서 나는 높이 : 173 및 너비 : 455 캔버스가 있습니다.캔버스에 2D 선 그리기

나는 어떻게 그것에 대해 가서 내 데이터리스트에 의해 선을 그려 거의 캔버스의 전체 높이를 사용합니까? 이제 데이터는 캔버스 하단의 한 줄에 표시되고 캔버스의 전체 높이는 사용하지 않습니다. 상자의 중앙에 배치하는 것도 좋습니다.

답변

3

캔버스의 전체 높이를 나타내려면 데이터 목록을 변환해야합니다. 이 작업을 수행하는 두 가지 확실한 방법이 있습니다.

1) 데이터 목록의 최대 값으로 캔버스의 높이를 나눕니다. 데이터리스트의 모든 값에 this를 곱하고이 새로운 데이터 포인트에 바인드하십시오.

2) 당신이 지금하고있는 규모가 옵션에서 승수 당신은 전체 캔버스가 사용되기 때문에 지금의 중앙 필요가 없습니다 1.

하나의 방식을 변화 적용으로 줄을 추가합니다. 나는 당신이 실제로 아래 아드리안의 코멘트 "캔버스의 거의 전체 높이"라고 검토를 참조


내가 하한을 생각하지 않았다 올바른지. 다음은 좀 더 나은 의사 코드입니다.

int border = 20; //How much of the canvas you *don't* want to use 
int graphHeight = Canvas.Height - border; 
int maxValue = DataList.GetMaxValue(); 
int minValue = DataList.GetMinValue(); 

double multiplier = graphHeight/(maxValue - minValue); 

foreach(int value in DataList) 
{ 
    int distanceFromBottom = value - minValue; 
    double proportionalValue = distanceFromBottom * multiplier; 
    double newValue = proportionalValue + (border/2) // move it up to the middle of the canvas 
} 

newValues를 새 DataList에 저장하고 바인딩합니다.

+0

둘 중 하나는 62 * 173/77 ~ 173의 캔버스 만 사용하고 나머지는 모두 공백으로 남겨 두어야합니다. –

+0

@Adrian 좋은 캐치, 내 대답 –

+0

을 수정했습니다. 내 생각에 –