Leadtools.Annotations.Core名前空間 > AnnContainerMapperクラス :Calibrateメソッド |
public void Calibrate( LeadLengthD sourceLength, AnnUnit sourceUnit, LeadLengthD destinationLength, AnnUnit destinationUnit )
'Declaration
Public Sub Calibrate( _ ByVal sourceLength As LeadLengthD, _ ByVal sourceUnit As AnnUnit, _ ByVal destinationLength As LeadLengthD, _ ByVal destinationUnit As AnnUnit _ )
public void Calibrate( LeadLengthD sourceLength, AnnUnit sourceUnit, LeadLengthD destinationLength, AnnUnit destinationUnit )
-(void) calibrateSourceLength:(double) srcLen sourceUnit:(LTAnnUnit) srcUnit destinationLength:(double) targetLen destinationUnit:(LTAnnUnit) targetUnit;
public void calibrate( LeadLengthD sourceLength, AnnUnit sourceUnit, LeadLengthD destinationLength, AnnUnit destinationUnit )
function Leadtools.Annotations.Core.AnnContainerMapper.Calibrate( sourceLength , sourceUnit , destinationLength , destinationUnit )
このメソッドは、CalibrationScaleのために新しい値を計算するために、パラメータを使います。この値が、このコンテナで作成されるすべての既存のルーラーと新しいルーラーオブジェクトによってその後使われます。
ルーラーを較正することは、特定のlengthをそれに割り当てることを意味します。たとえば手のデジタルレントゲン写真で、いずれかの指に沿ってアノテーションルーラーオブジェクトを描画したとします。この距離が正確に6.5cmであるとされるということを知っています。このような場合は新しいルーラー調整機能を使用して、このルーラー、既存のすべてのルーラー、および新しく作成したすべてのルーラーがこの距離を正確に6.5cmと計測するように調整できます。そのためには、まず指の長さと正確に一致するルーラーをコンテナーに描画してから(表示される値は無視します)、以下のサンプルに示すように校正を使用します。
以下のサンプルは、6.5cmであることが分かっている長さでルーラーを描画してから、校正を使用してマッパーの調整スケールを設定します。
using Leadtools.Annotations.Automation; using Leadtools.Annotations.Core; using Leadtools.Codecs; public void AnnContainerMapper_Calibrate() { // Add a ruler with a length of 1 inch to the container AnnContainer container = new AnnContainer(); double inch = 720; AnnPolyRulerObject rulerObj = new AnnPolyRulerObject(); rulerObj.Points.Add(LeadPointD.Create(1 * inch, 1 * inch)); rulerObj.Points.Add(LeadPointD.Create(2 * inch, 1 * inch)); rulerObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Red"), LeadLengthD.Create(1)); rulerObj.ShowGauge = true; rulerObj.ShowTickMarks = true; rulerObj.MeasurementUnit = AnnUnit.Inch; container.Children.Add(rulerObj); // Show the ruler Debug.WriteLine("Ruler to calibrate, length is 1 inch"); // Get the length of the ruler LeadPointD point1 = rulerObj.Points[0]; LeadPointD point2 = rulerObj.Points[1]; double length = Math.Sqrt(Math.Pow(Math.Abs(point2.X - point1.X), 2) + Math.Pow(Math.Abs(point2.Y - point1.Y), 2)); // Calibrate the container mapper container.Mapper.Calibrate( LeadLengthD.Create(length), // Source length AnnUnit.Unit, // Source unit (container units) LeadLengthD.Create(6.5), // Destination length AnnUnit.Centimeter); // Destination unit // Use the Centimeters as the measurement unit in the ruler rulerObj.MeasurementUnit = AnnUnit.Centimeter; // Now rulerObj should show 6.5 Centimeter as its length Debug.WriteLine("Calibrated, length is 6.5 cm"); }
using Leadtools.Converters; using Leadtools.Annotations.Automation; using Leadtools.Controls; using Leadtools.Annotations.Core; using Leadtools.Codecs; public void AnnContainerMapper_Calibrate() { // Add a ruler with a length of 1 inch to the container AnnContainer container = _automation.Container; double inch = 720; AnnPolyRulerObject rulerObj = new AnnPolyRulerObject(); rulerObj.Points.Add(LeadPointDHelper.Create(1 * inch, 1 * inch)); rulerObj.Points.Add(LeadPointDHelper.Create(2 * inch, 1 * inch)); rulerObj.Stroke = AnnStroke.Create(AnnSolidColorBrush.Create("Red"), LeadLengthDHelper.Create(1)); rulerObj.ShowGauge = true; rulerObj.ShowTickMarks = true; rulerObj.MeasurementUnit = AnnUnit.Inch; container.Children.Add(rulerObj); // Show the ruler _automation.Invalidate(LeadRectDHelper.Empty); Debug.WriteLine("Ruler to calibrate, length is 1 inch"); // Get the length of the ruler LeadPointD point1 = rulerObj.Points[0]; LeadPointD point2 = rulerObj.Points[1]; double length = Math.Sqrt(Math.Pow(Math.Abs(point2.X - point1.X), 2) + Math.Pow(Math.Abs(point2.Y - point1.Y), 2)); // Calibrate the container mapper container.Mapper.Calibrate( LeadLengthDHelper.Create(length), // Source length AnnUnit.Unit, // Source unit (container units) LeadLengthDHelper.Create(6.5), // Destination length AnnUnit.Centimeter); // Destination unit // Use the Centimeters as the measurement unit in the ruler rulerObj.MeasurementUnit = AnnUnit.Centimeter; // Now rulerObj should show 6.5 Centimeter as its length _automation.Invalidate(LeadRectDHelper.Empty); Debug.WriteLine("Calibrated, length is 6.5 cm"); }