2011年7月11日 星期一

Google Map API (Flex) 練習1

1. Flex 4.5
2. Apply Google MAP API Key
3. Download Google Map API (Flash) SDK
4. Ref: http://code.google.com/intl/zh-TW/apis/maps/documentation/flash/basics.html
MapOptionsInit.html
5. 地圖中心置於HWC(25.081,121,396)
6. 開新專案
7. 加入Flash SDK
8. 加入範例程式(修改座標,mx:script 改為 fx:script:
>maps:Map xmlns:maps="com.google.maps.*"
id="map"
mapevent_mappreinitialize="onMapPreinitialize(event)"
width="100%" height="100%"
sensor="false"
key="ABQIAAAAAgF6Qq8S-..."/< >fx:Script< >![CDATA[
import com.google.maps.LatLng;
import com.google.maps.Map;
import com.google.maps.MapEvent;
import com.google.maps.MapType;
import com.google.maps.MapOptions;
private function onMapPreinitialize(event:Event):void {
var opts:MapOptions = new MapOptions();
opts.zoom = 15;
opts.center = new LatLng(25.081,121.396);
opts.mapType = MapType.NORMAL_MAP_TYPE;
this.map.setInitOptions(opts); } ]]< >/fx:Script< 9. 執行

Google Map API 練習1

1. 第三版以後,測試Google Map API,如果用量不大,沒有Key也可以用。
2. 參考範例 疊加層(polyline-simple.html)
http://code.google.com/intl/zh-TW/apis/maps/documentation/javascript/overlays.html
將地圖中心改為醒吾,放大倍率改為15,調整三角形尺寸。
3. 網站執行htm檔案(本機端直接以IE開啟亦可)
4. 測試步驟
4-1 以檢視原始檔方式開啟,全選貼上記事本。
4-2 修改css連結
原為
>link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
改為

4-3 改中心座標HWC (25.081, 121.396)
// var myLatLng = new google.maps.LatLng(24.886436490787712, -70.2685546875);
4-4 改zoom 5--> 15, mapTypeID => ROADMAP
4-5 依據中心點,改多邊形(三角形)座標
var triangleCoords = [
new google.maps.LatLng(25.086, 121.396),
new google.maps.LatLng(25.076, 121.391),
new google.maps.LatLng(25.076, 121.401),
new google.maps.LatLng(25.086, 121.396),
];
4-6 以utf-8格式存檔,上傳

5. 連結網址,可以檢視原始檔轉存。

2011年7月9日 星期六

以 .NET Framework 進行平行程式設計(1)

Ref:
1. http://msdn.microsoft.com/zh-tw/library/dd235608.aspx
2. http://www.cnblogs.com/tansm/archive/2010/03/29/TaskTest.html

.NET 4.0 提供平行處理程式庫,在 System.Threading.Tasks 命名空間下,有系列類別提供便捷的方法製作平行處理與非同步作業。主要類別為
System.Threading.Tasks.Task (表示可以等候和取消的非同步作業)
System.Threading.Tasks.Task(Of TResult) (屬於可以傳回值的工作)
Factory 類別提供靜態方法,這些方法可建立和啟動工作
System.Threading.Tasks.TaskScheduler 類別提供預設執行緒排程基礎結構。
Ref 2 提供不錯的Task測試範例
1. a,b,c,d 四個工作
2. c等待 a,b 完成,開始執行
3. d等待 a完成, 開始執行
4-1. Add using System.Threading.Tasks;
4-2 建立 TestAction類別
a. 建構元建立工作名稱與延遲時間
b. Do 方法輸出開始、等待延遲、輸出完畢
public class TestAction
{
public TestAction(string actionName, int p)
{
_actionName = actionName;
_p = p;
}

private int _p;
private string _actionName;
public void Do()
{
Console.WriteLine("開始執行" + _actionName);
System.Threading.Thread.Sleep(new TimeSpan(0, 0, _p));
Console.WriteLine("執行完畢" + _actionName);
}
}
4-3 測試主程式
static void Main(string[] args)
{
TaskFactory factory = new TaskFactory();
Task a = factory.StartNew((new TestAction("A", 2)).Do);
Task b = factory.StartNew((new TestAction("B", 5)).Do);
Task c = factory.ContinueWhenAll(new Task[] { a, b }, ((preTasks) => (new TestAction("C", 1)).Do()));
Task d = factory.ContinueWhenAll(new Task[] { a }, ((preTasks) => (new TestAction("D", 1)).Do()));
Console.WriteLine("俟A,B,C,D工作完畢(C執行完畢),輸入Enter結束程式");
Console.ReadLine();
}


5. 下載

2011年7月6日 星期三

emgu WPF 2

前篇用Timer來做映像擷取,略遜於此篇用DispatchInactive。
1. 加入image標籤
2. 加入參考: Emgu.CV, Emgu.CV.UI, Emgu.Util, System.Drawing
3. 加入 [DllImport("gdi32")]
private static extern int DeleteObject(IntPtr o);
public static BitmapSource ToBitmapSource(IImage image)
{ ... }
4. 加入 private void Window_Loaded(object sender, RoutedEventArgs e)
{
capture = new Capture();
this.Dispatcher.Hooks.DispatcherInactive += new EventHandler(Hooks_DispatcherInactive);
}
5. 加入事件方法
Image frame = capture.QueryFrame();
{
if (frame != null)
{
webcam.Source = ToBitmapSource(frame);
}
}
6. 結果
7. 下載