C#相当于此代码

C#相当于此代码,c#,javascript,photoshop,C#,Javascript,Photoshop,我用过这个 var xPos = new UnitValue( 0.5,'px') ; var yPos = new UnitValue( 0.5,'px'); var pixPos = [ xPos, yPos ]; 它也不起作用,我必须将它作为参数传递给Colorsamples.Add() 根据此页面,add方法需要一个数组。将参数作为任何其他内容传递肯定会导致崩溃/异常: 我快速查看了互操作,Add方法获取了一个对象。正如@icbytes所暗示的,它需要一个数组,因此您可能可以使用一个装

我用过这个

var xPos = new UnitValue( 0.5,'px') ;
var yPos = new UnitValue( 0.5,'px');
var pixPos = [ xPos, yPos ];
它也不起作用,我必须将它作为参数传递给
Colorsamples.Add()


根据此页面,add方法需要一个数组。将参数作为任何其他内容传递肯定会导致崩溃/异常:


我快速查看了互操作,Add方法获取了一个对象。正如@icbytes所暗示的,它需要一个数组,因此您可能可以使用一个装箱对象数组。互操作在所有地方都使用
double
(而不是
float
),因此
double
可能是您想要使用的类型

出于好奇,您应该遍历ColorSamplers集合,看看其中包含哪些底层类型。集合存储实现
ColorSampler
(其中包含
SolidColorClass
属性)的对象,因此,如果您知道哪些对象实现了该属性,则可以创建这些类型以传递到Add方法中

首先将首选项设置为“像素”,以假定您提供的所有值都是基于像素的

 Photoshop.Application appRef = default(Photoshop.Application);
var mySampler = appRef.ActiveDocument.ColorSamplers.Add(ps);

您必须确保符合photoshop ColorSamplers.Add()要求的签名。为了让PhotoshopAPI能够自动提取拟合数据,简单地传输任何对象可能有点过重。如果它需要一个上面代码中的数组,那么只需传递一个包含两个条目的浮点数组。“但对我不起作用”-它怎么不起作用?您是否有编译器错误、运行时异常或其他问题?什么是
ColorSamples.Add
expect作为参数?是的,它表示异常非法参数1点值(可选单位)应为。我找不到任何关于Photoshop.ColorSamplers.Add()的文档它应该是什么类型的数组??int??浮动我被卡住了…:(试试float。看起来,你可能必须检查UnitValue是如何在内部键入的。float对我不起作用。我找不到一个例子来使用C#中的ColorSamplers.add()方法,然后找出UnitValue是如何在内部键入的。你可能必须重建那种结构/对象/任何东西。
 public class pixpos
  {
    float XPOS;
    float YPOS;
    public float xpos
    {
        get
        {
            return this.XPOS;
        }
        set
        {
            this.XPOS = value;
        }
    }
    public float ypos
    {
        get { return this.YPOS; }
        set { this.YPOS = value; }
    }
}   
     pixpos obj = new pixpos();
                    obj.xpos = xPos;
                    obj.ypos = yPos;
 Photoshop.Application appRef = default(Photoshop.Application);
var mySampler = appRef.ActiveDocument.ColorSamplers.Add(ps);
Photoshop.Application appRef = default(Photoshop.Application);
appRef.Preferences.RulerUnits = PsUnits.psPixels;

foreach (ColorSampler sampler in appRef.ActiveDocument.ColorSamplers)
{
  // Check to see what underlying type a sampler is so you can try
  // and make instances of this to pass into the Add method.
  Console.WriteLine(sampler.GetType().FullName);
}

// Try add an object array of double values, based on the error message implied units could work.
// 'D' with convert the number literal to a 'double'.
appRef.ActiveDocument.ColorSamplers.Add(new object[] { 0.5D, 0.5D } );