2010-05-18 38 views
2

我在Visual Studio 2010中使用腳本#來導入HTML5 Canvas元素的API。如何將外部API的屬性導入到腳本中#

它的工作非常適合像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'); 

我怎樣才能腳本#產生畫布背景的簡單分配屬性沒有的get_/SET_前綴?

回答

3

Got it!我正在使用一個接口,這在某些情況下很好,但是當我需要這個字段時,我不得不切換到一個抽象類,以免得到編譯錯誤。

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; 
} 

這兩個抽象類讓我用從腳本#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(); 
    } 
} 
0

更改屬性爲簡單的領域,它應該工作的很好..

IE:

public string StrokeStyle; 
public string Font; 

據推斷和屬性值產生get_/set_

+1

接口不能包含字段,對不對?將此添加到接口會導致編譯錯誤。 – a7drew 2010-05-18 18:39:37

2

一個快速的注意 -

隨着腳本#0.6,這是現在公衆和可從http://projects.nikhilk.net/ScriptSharp下載,您將在Script.Web.dll中看到Canvas API的開箱即用功能。

希望有所幫助。

相關問題