Code quay lui bằng C# tìm tổ hợp, chỉnh hợp chập k của n

thuvienwinform - Thuật toán trâu bò quen thuộc và khá hữu ích trong việc code. Để tìm tổ hợp đơn giản là tìm một dãy số thỏa mãn điều kiện sau:
- Các số đều khác nhau
- Số sau lớn hơn số trước
- Các bộ số không trùng lặp nhau
-...

 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.InteropServices;

namespace QuayLuiTimToHop
{
    class Program
    {
        #region Khai báo
        static int n, k;
        static int[] a, dau;
        #endregion

        #region THủ tục
        private static void Xuat(int i)
        {
            for (int j = 1; j <= k; j++)
                Console.Write(a[j] + " ");
            Console.WriteLine();
        }

        private static void Duyet(int i)
        {
            if (i > k) Xuat(i);
            else
            {
                int j;
                for (j = a[i - 1]; j <= n; j++)
                {
                    if (dau[j] == 0)
                    {
                        a[i] = j;
                        dau[j] = 1;
                        Duyet(i+1);
                        dau[j] = 0;
                    }
                }
            }
        }
        #endregion

        static void Main(string[] args)
        {
            #region Đầu vào
            Console.Write("Nhap va n: ");
            n = Convert.ToInt32(Console.ReadLine());
            Console.Write("Nhap va k: ");
            k = Convert.ToInt32(Console.ReadLine());
            a = new int[n+1];
            dau = new int[n+1];
            for (int i = 0; i < n + 1; i++)
                dau[i] = 0;
            #endregion

            #region Xử lí
            Console.WriteLine("To hop chap " + k + " cua " + n + ": ");
            a[0] = 1;
            Duyet(1);
            #endregion

            Console.ReadKey();
        }
    }
}
Dãy cần tìm là a
Thuật toán quay lui với vòng lặp sẽ bắt đầu từ a[i-1] đề thỏa mãn điều kiện các số khác nhau và số sau lớn hơn số trước. Trong quá trình duyệt kết hợp đánh dấu phần tử đã sử dụng để không bị trùng (ở trong này mình dùng mảng dau)
Khi tìm đủ k phần tử cho mảng a thì xuất ra.

Về lí thuyết quay lui có thể tham khảo trong sách giải thuật và lập trình của Lê Minh Hoàng

Với code này chuyển thành tính chỉnh hợp cũng không có gỉ cả, chỉ cẩn thay vòng lặp thành thế này là OK
Các số trong bộ số sẽ không phải là từ a[i-1] nữa mà là từ 1

for (j = 1; j <= n; j++)
{
    if (dau[j] == 0)
    {
        a[i] = j;
        dau[j] = 1;
        Duyet(i+1);
        dau[j] = 0;
    }
}
4/13/2014
Đăng bởi :
Nhãn :

[API] Phát nhạc MP3

Như chúng ta đã biết thư viện "System.Media" chỉ cho phép chạy file âm thanh ".wav" nhiều chúng ta chạy file MP3 rất khó khăn (làm một chương trình phát nhac đơn giản chẳng hạn -- không dùng dll của Windows Media đâu nhé)

Hôm nay mình sẽ hướng dẫn các bạn sử dụng API để chạy file MP3 trong C#.
Các bước như sau :

1. Đừng quên "using System.Runtime.InteropServices;" để sử dụng API nhé.

2. Import Dll "winmm.dll"
[DllImport("winmm.dll")]

private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

Hàm API này không hẳn có chức năng chạy MP3 mà nó là 1 hàm cho phép thực hiện câu lệnh được Coder đưa vào qua 1 string là strCommad . như vậy parameters này là quan trọng nhất (và mình cũng không biết các param khác có chức năng gì -- thôi thì cứ null -- API thường vậy mà HIHI ^^)

3. Giới thiệu các Commad để chạy 1 file MP3
- Mở MP3 :  "open "Đường dẫn tới file mp3" type mpegvideo alias MediaFile"
ví dụ : "open "E:\MUSIC\nhac.mp3" type mpegvideo alias MediaFile"
- Chạy MP3 vừa mở :  "play MediaFile"
Có thể dùng "play MediaFile REPEAT" để phát đi phát lại file MP3 vừa mở
- Dừng MP3 : "close MediaFile"


Nếu chưa làm được hãy xem ví dụ này :

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MP3
{
    public partial class Form1 : Form
    {
        public bool isOpen = false;

        public Form1()
        {
            InitializeComponent();
        }
                  // Import Dll này vô
        [DllImport("winmm.dll")]'

        private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);

        // BUTTON PLAY MP3
        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog op = new OpenFileDialog();
            op.Filter = "MP3 (*.mp3)|*.mp3";
            if (op.ShowDialog() == DialogResult.OK)
            {
                string szFile = op.FileName;
                MP3Open(szFile); 
                Mp3Play(false);
            }
        }
        // BUTTON STOP MP3
        private void button2_Click(object sender, EventArgs e)
        {
            Mp3Close();
        }

        // PHẦN XỬ LÍ ----------------------------------------------------------------------------------
        public void MP3Open(string szFileName)
        {
            string szCommad = "open \"" + szFileName + "\" type mpegvideo alias MediaFile";
            MessageBox.Show(szCommad);
           mciSendString(szCommand, null, 0, IntPtr.Zero);
            isOpen = true;
        }
        public void Mp3Close()
        {
            string szCommand = "close MediaFile";
            mciSendString(szCommand, null, 0, IntPtr.Zero);
            isOpen = false;
        }

        public void Mp3Play(bool isLoop)
        {
            if (isOpen)
            {
                string szCommand = "play MediaFile";
                if (isLoop) szCommand += " REPEAT";
                mciSendString(szCommand, null, 0, IntPtr.Zero);
            }
        }
    }
}

Đăng bởi :
Nhãn : ,

[API] Kiểm tra kết nối Internet

Trong nhiều chương trình, chúng ta cần thao tác với Server qua Network , song nếu máy tính chưa kết nối Internet thì chương trình rất có thể bị "Treo" do cố gắng làm những công việc bạn code (Đơn giản như chương trình gửi mail - hãy thử ngắt kết nối Internet và chạy chương trình :D)

Hôm nay mình sẽ hướng dẫn các bạn làm sao để kiểm tra máy tính có đang kết nối Internet !

1. Nhớ "using System.Runtime.InteropServices;"  để có thể sử dụng API

2. Import DLL "wininet.dll"
[DllImport("wininet.dll")]
private extern static bool InternetGetConnectedState(out int Description, int ReservedValue);

Ở đây hàm này sẽ trả về true nếu có kết nối internet và false nếu không ^^!


* Nếu các bạn chưa làm được có thể xem ví dụ dưới đây

    public class INTERNET
    {
        [DllImport("wininet.dll")]
        private extern static bool InternetGetConnectedState(out int Description, int                                                                                                                                        ReservedValue);
        public static bool ISINTERNETCONNECTED()
        {
            int des;
            if (InternetGetConnectedState(out des, 0) == true)
                return true;
            return false;        }
   }





Đăng bởi :
Nhãn : ,

NVNhan's Blog đăng loạt bài giới thiệu và hướng dẫn từng bước xây dựng một website bằng ASP MVC


thuvienwinform - Ngôn ngữ C# ngoài lập trình cho winform còn lập trình được cho cả webform (tức các trang web). Được phát triển bởi Microsoft, hiện nay các trang web viết bằng ASP MVC ngày càng nhiều. Công nghệ MVC mang lại cho coder cách tổ chức code khoa học hơn. Hiện nay blog NVNhan đang đăng các bài viết hết sức cơ bản dành cho các bạn mới làm quen với ASP, ASPMVC có một cách tiếp cận nhanh nhất với việc lập trình web. Mời các bạn đón đọc tại:
hoặc


Giao diện NVNhan's Blog

Với tiêu chí ngắn gọn, xúc tích, đơn giản và dễ hiểu. Các bài viết trên blog sẽ trang bị cho bản các kiến thức hết sức cơn bản về lập trình web, từ lúc bắt đầu tạo project đến lúc hoàn thành ra sản phẩm.
Kính mời các bạn đón đọc!
4/10/2014
Đăng bởi :
Nhãn :

Code gửi thư bằng gmail

thuvienwinform - Ứng dụng của nó khá nhiều ví dụ như báo lỗi sản phẩm, liên hệ tác giả, lấy key,...Trong code mình dùng máy chủ smtp của google. Các bạn có thể dùng các máy chủ khác hỗ trợ smtp như OutLook nhưng khi đó địa chỉ máy chủ và cổng sẽ khác, chỉnh lại là OK. Nếu code không hoạt động thì bạn tham khảo cách cài đặt tài khoản Gmail để smtp hoạt động ở bài: http://thuvienwinform.blogspot.com/2014/03/tfs-thiet-lap-email-thong-bao-alert-cho-team-foundation-server-bang-gmail-hoac-live-mail-giup-cap-nhat-cong-viec-kip-thoi.html

Project demo: https://www.dropbox.com/s/ey7fksmiddqjpkm/thuvienwinform-GuiThu.rar (26KB)

Sử dụng 2 thư viện:
+ using System.Net.Mail;
+ using System.Net;
để thực hiện công việc này

Code:
  
private void GuiThu(string diachigui, string matkhau, string diachinhan, string tieude, string noidung)
{
//using System.Net.Mail;
//using System.Net;
    #region Tạo nội dung thư
    MailMessage mail = new MailMessage(diachigui, diachinhan, tieude, noidung);
    #endregion

    #region Cấu hình smtp
    SmtpClient smtp = new SmtpClient()
    {
        //Máy chủ smtp
        Host = "smtp.gmail.com",
        //Cổng gửi thư
        Port = 587,
        //Tài khoản Gmail
        Credentials = new NetworkCredential(diachigui, matkhau),
        EnableSsl = true
    };
    #endregion

    #region Gửi thư
    smtp.Send(mail);
    #endregion
} 
4/08/2014
Đăng bởi :
Nhãn :

[TFS]Xóa project, work Item

thuvienwinform - Thực sự thì theo phương pháp WeareHouse thì không xóa được project và Work Item trong Tfs nhưng thực tế thì ta có thể thực hiện công việc này như sau:

1. Xóa project
- Có thể Admin sẽ xóa các User khỏi project đó đi -> trên máy người khác sẽ không thấy nữa (thực tế là nó bị ẩn). Nên dùng cách này vì còn có thể khôi phục được
- Hoặc xóa trong Tfs Admin Console (không khôi phục được)

- Hoặc dùng comand sau (phải cài Visual Studio) (phải gõ vào notepad xong copy, paste vào cmd):

cd C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE
TfsDeleteProject /force /collection:http://Ohia-PC:8080/tfs/DefaultCollection/ "Xóa anh đi 2"

- Với
+ C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE:  là được dẫn đến thư mục IDE của Visual Studio
http://Ohia-PC:8080/tfs/DefaultCollection/: là đường dẫn đến Collection
+ Xóa anh đi 2 là tên project cần xóa.

2. Xóa WorkItem:
- Command:
witadmin destroywi /collection:http://Ohia-PC:8080/tfs/DefaultCollection/ /id:id1, id2, id3


- Trong đó:
http://Ohia-PC:8080/tfs/DefaultCollection/: là đường dẫn đến collection
+ id1, id2, id3: là id các workitem cần xóa

- Hoặc có thể dùng ứng dụng của TEK xóa trực tiếp ngay trong Visual Studio. Bạn nào cần liên hệ mình gửi cho :)

My dictionary - tự xây dựng từ điển cuả riêng bạn!






thuvienwinform - Cảm ơn bạn Bùi Đức Duy đã mang đến MY DICTIONARY. Một phần mềm giúp người dùng tự xây dựng 1 cuốn từ điển cho riêng mình. Phần mềm sẽ tự động thống kê và đánh giá vốn từ của bạn thông qua tổng số từ bạn đưa vào từ điển.

Link (Giải nén và sử dụng) (1.89MB) : 
https://www.mediafire.com/?qen53rkal9wx8w3

Chức năng chính : 
+ Thêm | Sửa | Xóa từ trong từ điển của bạn 1 cách dễ dàng
+ Quản lí theo tài khoản (Hỗ trợ cho nhiều người dùng 1 máy tính ... - Thống kê số từ và đánh giá)
+ Hỗ trợ đổi mật khẩu | Tên | Hình đại diện cho người dùng
+ Nâng câp lên phiên bản PRO :
--- Liên kết tài khoản trong cùng 1 máy tính (Đồng bộ hóa từ điển vào nhau)
--- Chia sẻ tài khoản sang máy tính khác

Đặc biệt phần mềm có dung lượng cực nhỏ. Chỉ ~4MB. 
Chạy trên mọi HĐH 
Hỗ trợ tốt đồ họa cho Windows 7 trở lên !



Ở trong chương trình này có 2 công nghệ khá hay là gửi thư và phát âm mình sẽ giới thiệu trong vài bài tiếp theo. Các bạn tải về và cho đánh giá nha

[TFS] Quy định về quản lí code

thuvienwinform - Có thể sau một thời gian sử dụng chúng ta sẽ gặp những lỗi gây ức chế từ việc quản lí code của TFS@! Cụ thể là hiện tượng conflict, mất file, ...Để hạn chế tình trạng này mình đề nghị như sau:

- Về lỗi thiếu file. Ta sẽ thử cho một bạn up from lên rồi một bạn get về xem có thực sự là trên server có mà lại không get được không? Nếu thực sự như vậy thì TFS quá tệ@!

- Với form của mình không được phép conflict (kể cả check-in và get last version) vì chỉ mình mình sửa form đó thôi

- Để hạn chế conflict:
+ Chỉ check-in form của mình.
+ Khi conflict ở form không phải của mình thì cứ take server version thôi.
+ Khi conflict ở form của mình thì phải xem lại ai đã check-in form đó lên vào thực hiện ghép code lại cẩn thận (Merge) rồi hẵng check-in
+ Với các file dùng chung (DB, .sln, .csproj,...) thì dành cho bạn nào làm frmMain, sau khi chỉnh lại cho các form gắn kết đc với nhau thì sẽ check-in các file này (check-in cả project - không check-in solution)  (lúc này thường là lỗi DB và thiếu Reference, còn lỗi trong form thì phải đề nghị sửa lại). Và đó sẽ là bản final cho lần sửa đó.

- Với một số form dùng chung nhau, ví dụ như dùng form hiển thị file word thì thường gặp lỗi về DB và đầu vào cho form. Để hạn chế thì phải thống nhất code đầu vào và DB trên 2 máy mới thực hiện được.

- Conflict là gì?
Conflict xẩy ra khi 2 hay nhiều người cùng sửa 1 file. Ví dụ thế này:
Người 1: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> thành bản 2
Người 2: lấy phiên bản 1 về -> sửa -> tải lên (Check-in) -> conflict.

Khi xẩy ra conflict có 3 lựa chọn sau:
+ Merge: ghép code file của người 2 (file local) với file trên server (phiên bản 2 của người 1 up lên). Khi ghép thì ta sẽ chọn những phần nào khác nhau để lấy về. Chọn những phần khác nhau giữa 2 phiên bản sẽ có phiên bản đầy đủ của file này. Sau khi ghép xong thì có thể check-in bình thường.
+ Take Server Version: tức là sẽ lấy phiên bản trên server (phiên bản 2) về -> mất hết những gì đã sửa
+ Keep Local Version: tức là sẽ giữ nguyên bản trên máy. Không lấy bản 2 kia về. Khi này trên server là phiên bản 2. Trên máy có thể là phiên bản 3 (nhưng chưa check-in) -> rất kho cho sau này.
Phương pháp lựa chọn tối ưu vẫn là ghép code. Để hạn chế xẩy ra conflict khi check-in thì không để nhiều người cùng sửa 1 file.

Chúc chúng ta có những dự án thật thành công :)

[TFS] Chuyển Team Foundation Server giữa các server, các máy (video + ảnh)


thuvienwinform - Rất nhiều trường hợp, có thể là SQL Server gặp lỗi và phải cài lại, hay chỉ vì muốn đổi lại tên Server mà có thể xẩy ra những lỗi đối với Team Foundaiton Server (cụ thể là lỗi TF246017). Khi đó TFS sẽ mất kết nối với CSDL (cụ thể là database Tfs_Configuration). Cách khắc phục rất đơn giản. Chỉ cần vài dòng lệnh là xong!

- Chuẩn bị:
+ File TfsRestore.bat: https://www.dropbox.com/s/gclsrza6kjshtqz/TfsRestore.bat (2KB)
+ Máy có cái  Team Foundation Server, SQL Server

- Giải thich một số lệnh trong file .bat:
+ TfsConfig TfsServiceControl quiesce: dừng Team Foundation lại
+ TfsConfig TfsServiceControl unquiesce: khởi động lại Team Foundation
+ TfsConfig Accounts /ResetOwner: thiết lập tài khoản Owner cho file Database (cần thiết khi chuyển từ máy này sang máy khác)
+ TfsConfig Accounts /add /AccountType:ApplicationTier: thêm tài khoản ApplicationTier
+ TfsConfig RegisterDB: Thiết lập database cho Tfs. Đối với việc chuyển từ server này sang server khác cùng máy chỉ cẩn chuyển database và chạy lệnh này là OK

- Tình huống:
+ Thêm mới 1 server và muốn chuyển TFS sang đó
+ Hoặc chuyển TFS từ máy này sang máy khác
+ Cài lại SQL Server, cài lại win

- Cách làm này có thể khắc phục được lỗi TF246017
+ TF246017:

+ TF246017: Team Foundation Server could not connect to the database. Verify that the server that is hosting the database is operational, and that network problems are not blocking communication with the server

- Một số chú ý khi thực hiện:
+ File TfsRestore.bat phải được chạy bằng quyền Admin
+ Khi chuyển database phải stop (dừng) server đó lại. Nếu không sẽ không cho copy

- Thực hiện


Gồm có 2 bước cơ bản là:
B1: Chuyển Database
- Đầu tiên stop server đang được dùng để cài Tfs lại

- Copy các file database của Tfs (.mdf, .log) ra
+ Tìm đường dẫn
+ Thực hiện copy và paste ra đâu đó như bình thường

- Atach database sang server mới

- Tạo tài khoản mới cho database của Tfs trên server mới này
+ Chú ý với winserver thì phải yêu cầu mật khẩu bảo mật cao (hoặc bỏ tích Enfoce Password Policy)


B2: Thiết lập lại Team Foundation
Chạy file TfsRestore.bat và làm theo hướng dẫn

+ Thu Muc Tfs = Thư mục cài Team Foundation Server. Mặc định là: C:\Program Files\Microsoft Team Foundation Server 11.0\Tools
+ Server name = Tên Server mới muốn chuyển Tfs đến
+ Database name = tên database gắn kết với Tfs (mặc định là Tfs_Configuration)
+ Tai Khoan = tài khoản tạo đề quản lí Tfs_Confition ở B1

Done


Có gì vướng mắc khi chuyển Tfs các bạn có thể comment hoặc liên hệ với mình. Chúc thành công! ^^

Code một số thao tác đơn giản với xử lí hình ảnh: tăng độ sáng, độ tương phản, đổ màu,...



thuvienwinform - C# hỗ trợ chúng ta thư viện System.Drawing. Dựa vào đó chúng ta có thể thực hiện một số thao tác cơ bản với hình ảnh như thiết lập độ sáng, độ tương phản, xoay hình ảnh, hay tạo ảnh đen trắng,...Hôm nay mình xin được giới thiệu một số thao tác xử lí hình ảnh đơn giản thông qua lớp Bitmap trong System.Drawing


1. RGB
- Có thể hiểu nó là một bộ 3 số (R, G, B) nằm trong đoạn từ 0 -> 255. Mỗi số đại diện cho màu đỏ (Red - R), Xanh là cây (Green - G), Xanh lam (Blue). Bất kì màu nào cũng có thể được biểu diễn bằng bộ ba số này!
VD:
\
Màu đen: (0, 0, 0)
Màu đỏ: (255, 0, 0)
...
- Với hình ảnh (Image) nó được chia ra thành các pixel (điểm ảnh), mỗi pixel là một bộ ba số theo mô hình RGB này. Số pixcel = (chiều rộng)x(chiều cao).
- Trong C# để xử lí với các pixel này ta sử dụng lớp Bitmap trong System.Drawing (using System.Drawing)
- Cách làm chính là duyệt từng pixel và thực hiện các thao tác mong muốn trên các pixel đó để thu được bức ảnh mong muốn

2. Một số hàm, biến cơ bản
- Khai báo 1 Bitmap:
Bitmap bitmap = new Bitmap(anh);//anh là kiểu Image
Bitmap bitmap = new Bitmap(chieurong, chieucao);//chieucao, chieurong là kích thước của bitmap này
VD
Bitmap bitmap = new Bitmap(200, 200);//ảnh có kích thước 200x200

- Color:
Color c;//Bản ghi color. Khi đó bộ ba số RGB sẽ là: c.R, c.G, c.B
Color.FromArgb(r, g, b);//Lấy màu từ bộ ba số RBG
VD: màu đen
Color.FromArgb(0, 0, 0);//Màu đen
Color.Black;//Màu đen
Color.FromName("Black");//Màu đen

- Lấy màu của 1 pixel:
Color c;
c = bitmap.GetPixel(cot, hang);//cot, hang là tọa độ của pixel cần lấy màu

- Tô màu cho 1 pixel:
 bitmap.SetPixel(cot, hang, Color.FromArgb(r, g, b));//r, g, b là chỉ số RGB

câcsc
3. Thao tác cơ bản:
3.1. Chuyển ảnh về đen trắng (GrayScale):

GrayScale

- Để chuyển một ảnh về đen trắng ta chuyển  chỉ số từng pixel theo công thức: .299 * c.R + .587 * c.G + .114 * c.B

public Bitmap DenTrang(Image anh)
{
    Bitmap kq = new Bitmap(anh.Width, anh.Height);
    Bitmap anhtam = new Bitmap(anh);
    Color c;
    Byte rgb;
    for (int cot = 0; cot < anhtam.Width; cot++)
        for (int hang = 0; hang < anhtam.Height; hang++)
        {
            c = anhtam.GetPixel(cot, hang);
            rgb = (byte)(.299 * c.R + .587 * c.G + .114 * c.B);
            kq.SetPixel(cot, hang, Color.FromArgb(rgb, rgb, rgb));
        }
    return kq;
}


3.2. Chuyển ảnh về âm bản (Invert):

Invert

- Để chuyển ảnh về âm bản ta lấy 255 trừ đi từng chỉ số (làm màu từng pixel ngược lại)



public Bitmap AmBan(Image anh)
{
    Bitmap kq = new Bitmap(anh.Width, anh.Height);
    Bitmap anhtam = new Bitmap(anh);
    Color c;
    for (int cot = 0; cot < anhtam.Width; cot++)
        for (int hang = 0; hang < anhtam.Height; hang++)
        {
            c = anhtam.GetPixel(cot, hang);
            kq.SetPixel(cot, hang, Color.FromArgb(255 - c.R, 255 -  c.G, 255 -  c.B));
        }

    return kq;
}


3.4. Lọc màu (Filter):
Green Filter


- Đề lọc màu (cụ thể là theo 3 màu chính đỏ, xanh lá cây, xanh lam)
+ Màu đỏ: ta giữ nguyên màu đỏ và đảo ngược 2 màu kia (lấy 255 trù đi chỉ số G và B)
+ Tương tự với xanh và xanh lam

public Bitmap ChenMau(Image anh, int mau)
{
    //1 = do; 2 = xanh Green); 3 = xanh (blue)
    Bitmap kq = new Bitmap(anh.Width, anh.Height);
    Bitmap anhtam = new Bitmap(anh);
    Color c;
    int g = 0, r = 0 , b = 0;
    for (int cot = 0; cot < anhtam.Width; cot++)
        for (int hang = 0; hang < anhtam.Height; hang++)
        {
            c = anhtam.GetPixel(cot, hang);
            switch (mau)
            {
                case 1: r = c.R; g = c.G - 255; b = c.B - 255; break;
                case 2: r = c.R - 255; g = c.G; b = c.B - 255; break;
                case 3: r = c.R - 255; g = c.G - 255; b = c.B; break;
            }
            r = Math.Max(r, 0);
            b = Math.Max(b, 0);
            g = Math.Max(g, 0);
            kq.SetPixel(cot, hang, Color.FromArgb(r,g,b));
        }

    return kq;
}



3.5. Ghép 2 hình:
- Đề ghép 2 hình thì ta khai báo một Bitmap có chiều rộng bằng chiều rộng 1 ảnh và chiều cao bằng tổng chiều cao 2 ảnh.
- Sau đó setpixel từng pixel cho bitmap này.
Ngoài ra còn có chỉnh độ sáng (Brightness), chỉnh độ tương phản (Contrast),...các bạn có thể xem thêm
trong code.



4/06/2014
Đăng bởi :
Nhãn :

Nhận ngay 100$ cho VPS

Mua hàng ủng hộ page

Ủng hộ page

Nhãn

Code (45) Team Foundation Server (17) Database (14) News (14) product (13) toolbox (10) Linq (9) SoftDesign (8) XNA (6) API (5) Project (5) item (4)

- Bản quyền thuộc về Thư Viện WinForm - Giao diện: Metrominimalist - Thiết kế: Johanes Djogan -