using System.Runtime.InteropServices;   // 추가 하고

[DllImport("coredll.dll")]

private extern static void GetSystemTime(ref SYSTEMTIME lpSystemTime);

[DllImport("coredll.dll")]

private extern static uint SetSystemTime(ref SYSTEMTIME lpSystemTime);

        private struct SYSTEMTIME

        {

            public ushort wYear;

            public ushort wMonth;

            public ushort wDayOfWeek;

            public ushort wDay;

            public ushort wHour;

            public ushort wMinute;

            public ushort wSecond;

            public ushort wMilliseconds;

        }


        private void GetTime()  //  시스템 시간을 읽어온다

        {

             

            SYSTEMTIME stime = new SYSTEMTIME();

            GetSystemTime(ref stime);

          //  MessageBox.Show( Convert.ToString( stime.wHour));   현제시간 표시

           

        }


                                   // SetTime( "20121225" , "221122")  호출하면 됨  

        private void SetTime(string t_date, string t_time)    // 시스템 시간을 설정

        {

            try

            {

                int day_change = 0;  // 일자가 변경되는걸 알기 위해서


                SYSTEMTIME systime = new SYSTEMTIME();


              // UTC 타임이라 + 9시간 차이가 난다. UTC 로 검색해보시면

                if (Convert.ToInt16(t_time.Substring(0, 2)) >= 9)

                    systime.wHour = (ushort)(Convert.ToInt16(t_time.Substring(0, 2)) - 9 % 24);

                else

                {

                    day_change = 1;

                    systime.wHour = (ushort)(Convert.ToInt16(t_time.Substring(0, 2)) + 15 % 24);

                }

                systime.wMinute = (ushort)Convert.ToInt16(t_time.Substring(2, 2));

                systime.wSecond = (ushort)Convert.ToInt16(t_time.Substring(4, 2));


                systime.wYear = (ushort)(Convert.ToInt16(t_date.Substring(0, 4)));

                systime.wMonth = (ushort) (Convert.ToInt16(t_date.Substring(4, 2))  ) ;

                systime.wDay = (ushort)(Convert.ToInt16(t_date.Substring(6, 2)) - day_change); // 시간이 24시가 넘어가면 day 하루 늘어나게 된다. 그래서  day_change 변수를 사용해서 하루를 빼줌.


                SetSystemTime(ref systime);

            }

            catch

            { }

        }

 


기본 프로젝트를 하나 생성합니다.




 폼 위에 버튼 하나를 그리구요



 그리고 버튼 1 이벤트에 아래와 같은 코드를 입력합니다.

 DataTable dt;
        private void button_Click_1(object sender, EventArgs e)
        {

            dt = new DataTable("my_tbl");

            dt.Columns.Add("No");
            dt.Columns.Add(new DataColumn("Description"));
            dt.Columns.Add(new DataColumn("value"));
            dt.Columns.Add(new DataColumn("error_msg"));
            dt.Columns.Add(new DataColumn("memo"));
            dataGrid1.DataSource = dt.DefaultView;

        }




 그리고 버튼1을 누르면 위와같이 내용이 표시 됩니다.

 


 버튼을 몇개 추가해서 구현해 보죠 .


            DataGridTableStyle dgt = new DataGridTableStyle();
            DataGridTextBoxColumn dgtbc = new DataGridTextBoxColumn();
            dgt.MappingName = "my_tbl";
           
           
          
            dgtbc.MappingName = "No";
            dgtbc.HeaderText = "No-restting";
            dgtbc.Width = 100;
            dgt.GridColumnStyles.Add(dgtbc);


            dgtbc = new DataGridTextBoxColumn();
            dgtbc.MappingName = "Description";
            dgtbc.HeaderText = "Description-restting";
            dgtbc.Width = 100;
            dgt.GridColumnStyles.Add(dgtbc);

            dgtbc = new DataGridTextBoxColumn();
            dgtbc.MappingName = "value";
            dgtbc.HeaderText = "error_msg-restting";
            dgtbc.Width = 100;
            dgt.GridColumnStyles.Add(dgtbc);

            dgtbc = new DataGridTextBoxColumn();
            dgtbc.MappingName = "error_msg";
            dgtbc.HeaderText = "error_msg-restting";
            dgtbc.Width = 100;
            dgt.GridColumnStyles.Add(dgtbc);

            dgtbc = new DataGridTextBoxColumn();
            dgtbc.MappingName = "memo";
            dgtbc.HeaderText = "memo-restting";
            dgtbc.Width = 100;
            dgt.GridColumnStyles.Add(dgtbc);

            dataGrid1.TableStyles.Add(dgt);

   스타일 코드





------------------------------------------------------------------------
// 로우 추가 
 
DataRow[] dr;
DataRow dRow = dt.NewRow();
dRow = dt.NewRow();
dRow["No"] = "1";
dRow["Description"] = "첫번째 로우";
dRow["value"] = DateTime.Now.ToString("u").Replace("Z", "");
dRow["error_msg"] = "error";
dRow["memo"] = " " + "Alarm";

dt.Rows.Add(dRow);

dataGrid1.DataSource = dt.DefaultView;
  



---------------------------------------------------------------------------
//삭제 코드
      
            DataRow[] dr= dt.Select(null, null);
           
            for (int i = 0; i <= dr.Length - 1; i++)
            {
                dr[i].Delete();
            }

            dataGrid1.DataSource = dt.DefaultView;






----------------------------------------------------------------------
// 수정 코드 

       DataRow[] dr = dt.Select(null, null);

            for (int i = 0; i <= dr.Length - 1; i++)
                dr[i][1] = DateTime.Now.ToString("u").Replace("Z", "");

            dataGrid1.DataSource = dt.DefaultView;


 




 Visualstudio 을 여시고 wince 프로젝트를 하나 생성 합니다.



  Picturebox 1개를 생성하구요.


     PIcturebox 배경색을 빨강색으로 바꿉니다.




   버튼도 하나 추가 했구요.  Visual Studio 쪽은 준비가 완료되었습니다.  이제 이미지를 구해야겠죠 .



웹에서 도라에몽 사진을 하나 구했습니다.  배경색이 원래 흰색이였는데 제가 포토샵으로 

투명으로 바꾸고 싶은 부분을 저렇게 핑크색으로 채웠습니다. 
 


    using System.Drawing.Imaging;  <<=  선언 하시구요


  버튼1에 이벤트를 하나 겁니다.
 
  Bitmap dora = new Bitmap("doramong.gif");
  pictureBox1.Image = dora;



 실행시켜서 버튼1 클릭하시면 위와같이 도라에몽이 핑크 바탕에서 웃고 있습니다.

여기까지는 문제가 없겠죠 ?

자이제 실질적으로 저 핑크빛 색을 투명 처리 해보겠습니다. 

 



Bitmap mounntain = new Bitmap("mounntain.jpg");  // 산그림
Bitmap dora = new Bitmap("doramong.gif");           // 도라에몽


 Bitmap bmp = new Bitmap(pictureBox1.Width, pictureBox1.Height);
 Graphics g = Graphics.FromImage(bmp);

 

 g.DrawImage(mounntain, 0, 0);    // 먼저 산을 그림니다.

 Rectangle dstrect = new Rectangle((int)0, (int)0, pictureBox1.Width, pictureBox1.Height);
 ImageAttributes attr = new ImageAttributes();
 attr.SetColorKey(dora.GetPixel(1, 1), dora.GetPixel(1, 1));  // 투명할 색을 선택
 g.DrawImage(dora, dstrect, (int)0, (int)0, pictureBox1.Width, pictureBox1.Height, GraphicsUnit.Pixel, attr);


pictureBox1.Image = bmp;



버튼을 클릭하면 위와같이 핑크빛 배경이 사라졌음을 보셨을겁니다.

이해를 돕고자 뒤에 산이미지를 하나 더 그렸습니다.  ^^


+ Recent posts