2016年3月8日 星期二

C# MVC專案, 無法叫用中斷點 未載入這個文件的符號

Dear all : 某次取得TFS專案後發現該問題,查了網路上許多方法後都無效,最後進行以下的操作才讓程式恢復Debug ,原本推測是bin 底下的pdb未進行同步,但發現清除專案在建置仍是最新的組件。
現在發現應該是IIS Catch住組件的資訊。

1.  專案 -> 屬性

2. Web -> 將專案URL 的初始位置 修改,※筆者原本URL為: http://localhost:9526 當改成 8429後就可以進行Debug了


因為專案屬於visual 2013 C# .netFrameWork 4.5.1 MVC  如果還是無法解決只能再另尋方法

2015年9月1日 星期二

C# WPF程式->如何將Canvas物件存成圖片

這個問題看似很簡單,但實際在網路找尋相關資源來實作都會碰到相同問題。

就是: 為何輸出的圖片與Canvas圖層上的畫面不同,那以下程式碼是解法!!!


步驟流程如下:
1. 將canvas做 UIElement Updata
2. 使用RenderTargetBitmap 將canvas物件存成bitmap物件
3. 使用FileStream存成指定格式的圖片。



//-------以下是圖片匯出

            //--設定圖片繪製方法
            ImageBrush Mybrush = new ImageBrush();
            //--將該.png 做成底圖
            Mybrush.ImageSource = new BitmapImage(new Uri(@"C:\CWB\EEW07.png", UriKind.Relative));
            //--繪製到canvas物件作為背景
            canvas.Background = Mybrush;

            //--以下對canvas物件做 UIElement更新
            Size tSize = new Size(canvas.Width, canvas.Height);
            //--更新canvas物件
            canvas.Measure(tSize);
            //--更新後的物件傳遞
            canvas.Arrange(new Rect(new Point(0, 0), tSize));

            //接著將圖像做保存
            //設定一個DrawingVisual 存放canvas的繪製結果
            DrawingVisual tDrawingVisual = new DrawingVisual();
            using (DrawingContext context = tDrawingVisual.RenderOpen())
            {
                //存放canvas
                VisualBrush tVisualBrush = new VisualBrush(canvas);
                //將像素塗滿
                tVisualBrush.Stretch = Stretch.Fill;
                //塗滿範圍為 0~ 880寬 與 0 ~ 600高
                context.DrawRectangle(tVisualBrush, null, new Rect(0, 0, 880, 600));
                context.Close();
            }

            //轉成BitMap的存放容器
            RenderTargetBitmap tRenderTargetBitmap = new RenderTargetBitmap((int)canvas.RenderSize.Width, (int)canvas.RenderSize.Height, 96d, 96d, PixelFormats.Default);
            //將我們剛剛繪製好的tDrawingVisual轉成bitmap物件
            tRenderTargetBitmap.Render(tDrawingVisual);

            //準備存進去
            using (FileStream tFileStream = new FileStream("C:\\Taiwan.png", FileMode.Create, FileAccess.Write))
            {
                //-我要存成Png格式 所以用PngBitmapEncoder
                PngBitmapEncoder tPngBitmapEncoder = new PngBitmapEncoder();
                //-然後啟用點陣圖交錯格式
                tPngBitmapEncoder.Interlace = PngInterlaceOption.On;
                //-將tRenderTargetBitmap轉成PNG
                tPngBitmapEncoder.Frames.Add(BitmapFrame.Create(tRenderTargetBitmap));
                //存到C:\\Taiwan.png 檔案中
                tPngBitmapEncoder.Save(tFileStream);
                //關閉
                tFileStream.Close();
            }

2015年8月24日 星期一

使用Javascript 將 主網頁資訊傳遞給 自身iframe內嵌網頁資料 iframe傳值的方法

網頁A (A.html):

 <iframe onload="setName('123')" name="history_page" id="history_page" src="B.html" width="240" height="130" scrolling="no" frameborder="0"></iframe>


function setName(str) {
       
        history_page.document.History_form.str_name.value = str;
    }


網頁B(B.html):


 <!--從主頁取得123值 -->
    <form action="abc.cgi" name="History_form" id="History_form" method="post">
        <input type="hidden" name="str_name" id="str_name" value="">
    </form>




從網頁A載入的時候就會一併將值透過iframe 的onload事件 將值傳遞個B.html 中的 str_name資料。 

2015年8月10日 星期一

記憶卡片遊戲-周星馳電影主題

剛上研究所時自修程式,閒暇之餘寫出來的小品遊戲。說明如下:


開啟程式MEMORY CARY.exe 檔案,會有兩個選擇
1.點擊左邊周星馳的臉進入遊戲
2.點擊右邊周星馳的臉離開遊戲


















進入遊戲後左下角會有開始跟離開的按鈕
遊戲難度為中間讀秒的地方有分10秒、15秒、20秒

















按下開始後會先倒數3秒看所有牌面的位置,然後會翻面。玩家找出位置即可。

遊戲下載位置: 點我下載

2015年8月7日 星期五

C# 發送Google E-Mail Sample Code

以下介紹C# 的郵件服務功能 ,該範例使用Visual Studio 2013  Windows Form 撰寫

需要參考引用 using System.Net.Mail;
比較要注意的地方是:
1.  寄件者SMTP : google的位址為 smtp.gmail.com  如果要使用其他郵件服務需要修改
2.  寄件者Port : 同上,google需要開啟587 Port 
3.  寄件者Gmail帳號: 要輸入自己的google gmail帳號
4.  寄件者密碼:要輸入自己的google gmail密碼


程式畫面圖:

當按下寄郵件按鈕,如果成功:










以下是程式碼:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Net.Mail;//---使用郵件參考功能
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace GoogleGmail
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        /// <summary>
        /// 發送郵件的按鈕
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click(object sender, EventArgs e)
        {
            string Catcher = textBox_Catcher.Text;//-收件者 會自動幫我們,分隔
            string Title = textBox_Title.Text;//-----信件標題
            string Body = textBox_Body.Text;//-------信件內容
           
            string SenderName= textBox_Name.Text;//寄件者姓名
            string Sender= textBox_SenderMail.Text;//寄件者
            string UserName=textBox_UserName.Text;//寄件者帳號 這裡以Gmail做設定
            string PassWord=textBox_Password.Text;//寄件者密碼
            int Port =int.Parse(textBox_Port.Text);//Port號 GoogleGmail是587
            string SMTP = textBox_SMTP.Text;//-------SMTP 這裡以Gmail的伺服器為範例



            MailMessage msg = new MailMessage();//-----------------建立mail object
            msg.To.Add(Catcher);//收件者,自動以逗號分隔不同收件者

            //信件的寄件者郵件地址, 姓名 ,使用的編碼
            msg.From = new MailAddress(Sender, SenderName, System.Text.Encoding.UTF8);

            msg.Subject = Title;//郵件標題
            msg.SubjectEncoding = System.Text.Encoding.UTF8;//郵件標題編碼
            msg.Body = Body;//郵件內容
            msg.BodyEncoding = System.Text.Encoding.UTF8;//郵件內容編碼
            msg.IsBodyHtml = false;//是否是HTML郵件
            msg.Priority = MailPriority.Normal;//郵件優先級

            try
            {
                //建立 SmtpClient 物件 並設定 Gmail的smtp主機及Port
                SmtpClient MySmtp = new SmtpClient(SMTP, Port);

                //設定你的帳號密碼
                MySmtp.Credentials = new System.Net.NetworkCredential(UserName, PassWord);

                //Gmial 的 smtp 使用 SSL
                MySmtp.EnableSsl = true;

                //發送Email
                MySmtp.Send(msg);

                MessageBox.Show("發送成功!!!");
            }
            catch (System.Net.Mail.SmtpException ex)
            {
                MessageBox.Show("發送失敗:"+ex.Message);
            }

        }

        }
    }



程式Sample Code 原始碼 下載位置: 點我下載
程式執行檔案   下載位置: 點我下載



2015年7月23日 星期四

ClickOnce發行的奇怪錯誤," 無法發行 因為無法建置專案 ",另類解法

2015/07/23 使用tortoisesvn後,取得的最新版本程式當要發行時會出現 " 無法發行 因為無法建置專案"

1.如下圖,當我發行時 使用滑鼠右鍵(對專案) -> 屬性 後指向到發行位置



2. 會出現以下的問題@@?




3. 後來嘗試使用滑鼠右鍵(點擊專案) -> 發行(B)... 就可以使用發行精靈正常發行了。

推測是屬性的發行在經過版本控制軟體後已經有造成錯誤了,只能用重新設定發行的方式進行發行。


2015年7月22日 星期三

TortoiseSVN 如何從遠端的檔案庫取得資料

1.先確認遠端位置的檔案位置

在遠端的: 192.168.8.100 位置
檔案路徑為: file:///E:/CWB/CWBProgramFile
 

2.
因此我們只要把檔案庫URL: 的地方E:/  改成 192.168.8.100\ 即可
取出目錄就是將檔案存放的位置。