1

私はこのhttp://aforge.googlecode.com/svn/trunk/Samples/Imaging/ShapeChecker/MainForm.csコードを使用しますが、変数に値を書き込む必要があります: 中心、角の半径、およびラベル。しかしProcessImage(Bitmap bitmap)、class2 と class1 にはリストが必要です。

これらの変数をクラス 2 からクラス 1 に取得し、テキスト ボックスにダンプするにはどうすればよいですか?

class class1
{

    AForge.Point center;
    float radius;
    List<IntPoint> corners;      

    private void ProcessImage( Bitmap bitmap )
    { 
     ...
    }
}

class class2
{
 ??? label1.Text = center + radius + corners... ???
}
4

1 に答える 1

1

class1 から必要なデータ フィールドを public としてマークします。次に、class2 で、class1 に基づいてオブジェクトをインスタンス化すると、それらのデータ フィールドにアクセスできるようになります。組み込みの .ToString() メソッドを適用して、float と Point を変換します。リストを反復処理してから、IntPoint.ToString() メソッドを呼び出す必要があります。

class class1
{

    public AForge.Point center;
    public float radius;
    public List<IntPoint> corners;      

    private void ProcessImage( Bitmap bitmap )
    { 
     ...
    }
}

class class2
{
    class1 myClass1 = new class1();
    private void setTextLabel()
    {
        label1.Text = myClass1.center.ToString();
        label1.Text += myClass1.radius.ToString();
        foreach (IntPoint ip in myClass1.corners)
        {
            label1.Text += ip.X.ToString();
            label1.Text += ", ";
            label1.Text += ip.Y.ToString();
        }
    }
}

完全で機能する実装を以下に示します。私はこれをWebプロジェクトとして行いました。
Class1.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AForge;

namespace stack_question
{
    public class Class1
    {
        public AForge.Point center;
        public float radius;
        public List<IntPoint> corners;

        public Class1()
        {
            center = new AForge.Point(3.3F, 4.4F);
            radius = 5.5F;
            corners = new List<IntPoint>();

            corners.Add(new IntPoint(6, 7));
            corners.Add(new IntPoint(8, 9));
        }
    }
}

Class2.aspx.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AForge;

namespace stack_question
{
    public partial class Class2 : System.Web.UI.Page
    {
        Class1 myClass1 = new Class1();

        protected void Page_Load(object sender, EventArgs e)
        {
            setTextLabel();
        }

        private void setTextLabel()
        {

            label1.Text += "Center: " + myClass1.center.ToString() + "<br/>";
            label1.Text += "Radius: " + myClass1.radius.ToString() + "<br/>";
            foreach (IntPoint ip in myClass1.corners)
            {
                label1.Text += "IntPoint: " + ip.X.ToString();
                label1.Text += ", ";
                label1.Text += ip.Y.ToString() + "<br/>";
            }
        }
    }
}

最後に、Class2.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Class2.aspx.cs" Inherits="stack_question.Class2" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="label1" runat="server" Text=""></asp:Label>
    </div>
    </form>
</body>
</html>

Web ページの出力は次のようになります。

Center: 3.3, 4.4
Radius: 5.5
IntPoint: 6, 7
IntPoint: 8, 9
于 2013-04-25T18:57:42.067 に答える