C# PNG 轉 JPG 會變黑的問題

2008/10/22

參考程式碼:



Image img = Image.FromFile(@"c:\source.png", true);
Bitmap bmp = new Bitmap(img );
Graphics graf = Graphics.FromImage(bmp);
graf.Clear(Color.White);
graf.DrawImage(img, 0, 0, img.Width, img.Height);
bmp.Save(@"c:\source.jpg", ImageFormat.Jpeg);


有沒有很溫馨


如何讓 SWFLoader 與 被載入的程式作溝通

2008/10/15

如果使用 SWFLoader 要跟其內部 程式 傳遞參數時,
只要被載入的程式有開放介面提供外部呼叫,
就可以透過 System Manager 來呼叫。
例如:
被載入的程式(SWFLoaded)開放的介面:public function setVarOne(newText:String):void
主程式範例:


Flex 取得外部參數

2008/10/13

假設你使用Flex 製作出一顆 SWF檔案

需要讀出外部參數

譬如

http://www.sample.com.tw/Main.swf?UserId=Lucifer


因為程式需求需要把UserId讀進來



TabNavigation 標籤改變事件

2008/09/18

MXML :

 <tabnavigation change="onChange(event)" id="tabnav" />



Action Script

private function onChange(IndexChangeEvent):void
{
//改變的目標
  var child:DisplayObject = event.relatedObject;
//相當於 tabnav.getChildAt(event.newIndex);
}


設定 Subversion 不能匿名簽出程式碼

2008/09/10

在 svn/svnserve.conf 裡 anon-access = read 為預設值,必須改為 anon-access = none

然後在 conf/authz 裡設定
[/]
@developer = rw #developer 為群組, 必須在群組名稱前加上 @
#* = r

Reference : DigitLiao


補述WebConfig

2008/07/23

之前ShinBan寫的過於含糊..

補述一份...

在Web.Config中...

可以發現一Section 叫做

裡面可以加入自己的需要的Key and Value

範例如下:


解決終端服務90天限制問題

2008/07/09

win2k服務器上裝了應用程序模式的終端服務,並打了sp4的終端服務破解補丁,經測試解除了時間限制。但服務器在一次系統自動更新以後,該補丁失效了。90天以後,客戶機不能再登陸到服務器。那個著急啊~~~~~~~~~

後來,這篇文章幫助了我:http://www.33d9.com/doc/article/641.html
貼出原文與大家分享:


switch with no case will report internal build error when compiling

2008/05/21



var foo:int = 2;
switch (foo) {

}


一定要在 switch 裡面放 case,否則編譯時會回報 internal build error。Flex Builder 不會指出是這個敘述不正確,找 error log 也看不出所以然來。

如果沒注意到這件事,會讓你 debug 很久。


Flex 3 Call .Net WebService (3)

2008/04/01

Flex 3 程式碼如下

分別測試跟呼叫之下的 Web Service


程式碼如下:





 <?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
 <mx:Button x="75" y="52" label="Add  a data." click="btnInsert_Clidk();" width="133"/>

 <mx:Script>
  <![CDATA[
   import generated.webservices.GetUserInfoCount_request;

   import generated.webservices.GetUserInfoCountResultEvent;
   import generated.webservices.ArrayOfUserInfo;

   import mx.collections.ArrayCollection;
   import generated.webservices.GetUserInfoArrayResultEvent;

   import generated.webservices.AddUserInfoResultEvent;
   import generated.webservices.AddUserInfo_request;

   import generated.webservices.TestService;
   import generated.webservices.UserInfo;

   import mx.controls.*;
  
  
   // TestService
   private var objService:TestService=new TestService();

  
   public function btnInsert_Clidk():void
   {
    objService.addaddUserInfoEventListener(resultAddUserInfo);

   
    //新增一筆資料 呼叫  WebService 中的  AddUserInfo(string name,string tel,string addr)
    objService.addUserInfo("Lucifer.Loudon","0917796416","台北市內湖區");

   }

  
   //取回結果並用Alet.show方式秀出
   public function resultAddUserInfo(evt:AddUserInfoResultEvent):void

   {
   
    Alert.show("Name:" + evt.result.Name +", Tel:"+ evt.result.Tel+", Addr:"+evt.result.Addr);
   }

  
 
  
   public function btnGetAllData_Click():void
   {
    objService.addgetUserInfoArrayEventListener(resultGetUserInfo);

   
    //呼叫   UserInfo[] GetUserInfoArray()
    objService.getUserInfoArray_send();
   }
  
   public function resultGetUserInfo(evt:GetUserInfoArrayResultEvent):void

   {
   
    var list:ArrayCollection = evt.result as ArrayCollection ;

    dg.dataProvider=list;
   }
  
  
   public function btnGetArrayCount_Click():void

   {
    var list:ArrayOfUserInfo=new ArrayOfUserInfo();

   
    for(var i:int=1;i<=20;i++)

    {
     var tmp:UserInfo=new UserInfo();
     tmp.Name="Name"+i.toString();
     tmp.Tel="TEL"+i.toString();

     tmp.Addr="Addr"+i.toString();
    
     list.addItem(tmp);

    }
   
    //呼叫 GetUserInfoCount(UserInfo[] userInfos) 並傳入 UserInfo[20]
    objService.addgetUserInfoCountEventListener(resultGetArrayCount);
    objService.getUserInfoCount(list);

   }
  
   public function resultGetArrayCount(evt:GetUserInfoCountResultEvent):void

   {
    Alert.show(String(evt.result));
   }

  

  ]]>
 </mx:Script>
 <mx:Button x="75" y="106" label="Get AllDataInfo" width="133" id="btnGetAllData" click="btnGetAllData_Click()"/>

 <mx:DataGrid x="75" y="179" width="399" height="258" id="dg">

  <mx:columns>
   <mx:DataGridColumn headerText="Name" dataField="Name"/>

   <mx:DataGridColumn headerText="Tel" dataField="Tel"/>
   <mx:DataGridColumn headerText="Addr" dataField="Addr"/>

  </mx:columns>
 </mx:DataGrid>
 <mx:Button x="242" y="52" label="Get Array Count" width="138" id="btnGetArrayCount" click="btnGetArrayCount_Click()"/>

</mx:Application>



Flex 3 Call .Net WebService (2)

1. 開啟Flex 3 並新增專案 命名為 FlexCallWebServiceSample

2. Import 自己寫的WebService 也是 Flex 3 新增號稱強大的功能
選擇 Data - > Import WebService (WSDL)



Flex 3 Call .Net WebService (1)

首先我們得先建立WebService ..


開啟VS.Net ...


並且建立一個 Class 為


 public class UserInfo
{
   public string Name{get;set;} //姓名
   public string Tel{get;set;} // 電話
   public string Addr{get;set;} //地址
}




Flex 3 Call .Net WebService (0)


Flex - 讓圖片(Image)可以單向放大縮小

2008/03/24

只要將 Image 的 maintainAspectRatio property 設為 false,圖片即可單向放大縮小,而不是依照等比例來放大縮小。

另外要設定 scaleContent 的 property 設成 "true" 圖片才能放大縮小。


一些Flex入門文件

2008/03/23

ActionScript 3 Design Patterns

Flex 3 API

Flex 3 官方文件

Flex 3 特色介紹


當您使用 Visual C# . NET 使用 CookieContainer 來維護狀態在 Web 服務

在編寫 WebService 的時候,根據預設值, ASP . NET 工作階段支援之每一個 Web 服務方法已關閉。 您必須明確地啟用工作階段之每一個 Web Service 方法需要工作階段狀態支援。 若要啟用工作階段支援, WebMethod 屬性 (Attribute) 加入 EnableSession 屬性。 如果要執行這項操作,只要於 [WebMethod] 加入 EnableSession Attribute 即可
Example:



 [WebMethod(EnableSession = true)]
public int Counter()
{    int count;
    if (Session["count"] == null)
    {
        count = 1;
    }
    else
    {
        count = (int)Session["count"] + 1;
    }
    Session["count"] = count;
    return count;
}




PureMVC 文章

2008/03/22

From Cairngorm to PureMVC : a quick comparison | Flex My Day

Handling deferred view component creation within the PureMVC framework

PureMVC_Implementation_Idioms_and_Best_Practices.pdf

Flex 框架比較投影片
https://admin.adobe.acrobat.com/_a200985228/p12266504/


SQL Server Management Studio Express 設定如何讓其他使用者連線

2008/03/20

先開啟SQL Server Configuration Manager→Protocols for SQL EXPRESS→TCP/IP→內容



使用 BitmapData 來做影像翻轉

2008/03/19

水平翻轉:將最上列的像素與最下列的像素做交換, 將第二列的像素與最下列的像素做交換, 將第三列...., 一直做到中間列。
垂直翻轉:做法同上,只是改成最左欄與最右欄交換。

private function getImageBitmapData(image: Image):BitmapData
{
var bd:BitmapData = Bitmap(image.content).bitmapData;
return bd;
} 

水平翻轉
private function horizontalFlip(event:MouseEvent):void {
var bitmapData:BitmapData = getImageBitmapData(img);

var rect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
var data:ByteArray = bitmapData.getPixels(rect);

var width:int = bitmapData.width;
var height:int = bitmapData.height;
var arr:Array = new Array(width * height * 4);

data.position = 0;
for(var y:int = 0; y < height; y++) {
for(var x:int = width - 1; x >= 0; x--) {
var val:int = data.readInt();
var pos:int = (y * width * 4) + (x * 4);
arr[pos + 0] = (val & 0xFF000000) >> 24;
arr[pos + 1] = (val & 0x00FF0000) >> 16; //data.readByte();
arr[pos + 2] = (val & 0x0000FF00) >>  8; //data.readByte();
arr[pos + 3] = (val & 0x000000FF); //data.readByte();
}
}

var b:ByteArray = new ByteArray();
for(var j:int = 0; j < data.length; j++) {
b.writeByte(arr[j]);
}

b.position = 0;
bitmapData.setPixels(rect, b);
}

垂直翻轉
private function verticalFlip(event:MouseEvent):void {   
var bitmapData:BitmapData = getImageBitmapData(img);

var rect:Rectangle = new Rectangle(0, 0, bitmapData.width, bitmapData.height);
var data:ByteArray = bitmapData.getPixels(rect);

var width:int = bitmapData.width;
var height:int = bitmapData.height;
var arr:Array = new Array(width * height * 4);

data.position = 0;
for(var y:int = height - 1; y >= 0; y--) {
for(var x:int = 0; x < width; x++) {
var val:int = data.readInt();
var pos:int = (y * width + x) << 2; //在迴圈中,使用 shift 運算子來提升運算效率。
arr[pos + 0] = (val & 0xFF000000) >> 24;
arr[pos + 1] = (val & 0x00FF0000) >> 16; //data.readByte();
arr[pos + 2] = (val & 0x0000FF00) >>  8; //data.readByte();
arr[pos + 3] = (val & 0x000000FF); //data.readByte();
}
}

var b:ByteArray = new ByteArray();
for(var j:int = 0; j < data.length; j++) {
b.writeByte(arr[j]);
}

b.position = 0;
bitmapData.setPixels(rect, b);
} 


程式 . 生活 . D小調.@2010 | Binary Design: One Winged Angel.