我在Visual Studio2010中使用Script#来导入HTML5画布元素的应用编程接口。
它适用于FillRect()、MoveTo()、LineTo()等。我声明了下面的接口,然后就可以在C#中针对它进行编码了。然后,Script#很好地将其转换为JavaScript。
public interface ICanvasContext
{
void FillRect(int x, int y, int width, int height);
void BeginPath();
void MoveTo(int x, int y);
void LineTo(int x, int y);
void Stroke();
void FillText(string text, int x, int y);
}我希望包含接受简单字符串的StrokeStyle属性,但我不知道如何使用接口来实现这一点。以下接口属性会在JavaScript中创建前缀,从而导致失败。生成的JavaScript将与HTML5 Canvas API不匹配。
string StrokeStyle { get; set; }
string Font { get; set; }上一个属性将创建此JavaScript:
ctx.set_strokeStyle('#FF0');如何让Script#在没有get_/set_前缀的情况下生成画布上下文的简单赋值属性?
发布于 2010-05-19 06:05:17
明白了!我使用了一个接口,这在某些情况下是可以的,但是当我需要这个字段时,我必须切换到一个抽象类,这样才不会出现编译错误。
public abstract class Canvas : DOMElement
{
public abstract CanvasContext GetContext(string dimension);
}
public abstract class CanvasContext
{
public abstract void FillRect(int x, int y, int width, int height);
public abstract void BeginPath();
public abstract void MoveTo(int x, int y);
public abstract void LineTo(int x, int y);
public abstract void Stroke();
public abstract void FillText(string text, int x, int y);
public string StrokeStyle;
public string Font;
}这两个抽象类让我可以使用Script#中的HTML5 Canvas API,如下所示:
public class MySample
{
public void DoWork(string canvasId)
{
Canvas canvas = (Canvas) Document.GetElementById(canvasId);
CanvasContext ctx = canvas.GetContext("2d");
// ctx.FillRect(10,20,100,300);
ctx.BeginPath();
ctx.MoveTo(10, 10);
ctx.LineTo(100, 300);
ctx.MoveTo(20,10);
ctx.LineTo(559,300);
ctx.StrokeStyle = "#F00";
ctx.Stroke();
}
}发布于 2010-06-23 16:42:42
一个简单的提示-
script# 0.6现在是公开的,可以从http://projects.nikhilk.net/ScriptSharp上下载,您将在Script.Web.dll中看到开箱即用的Canvas API。
希望这能有所帮助。
发布于 2010-05-19 02:21:42
将该属性更改为一个简单的字段,它应该可以正常工作。
即:
public string StrokeStyle;
public string Font;它推断并生成属性值的get_ / set_。
https://stackoverflow.com/questions/2859869
复制相似问题