반응형

* VBNET 이미지 밝기 조절 (Image Brightness) 예제...

 

Main

 

- 사용한 컨트롤 : Button 3개, PictureBox 1개

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        Dim ofd As OpenFileDialog = New OpenFileDialog()

        ofd.Filter = "JPG Files(*.jpg) | *.jpg"
        If ofd.ShowDialog() = Windows.Forms.DialogResult.OK Then

            pictureBox1.Image = New Bitmap(ofd.FileName)
        End If

    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click

        '20 씩 밝기 증가
        pictureBox1.Image = BrightnessImage(pictureBox1.Image, 20)

    End Sub

    Private Sub button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button3.Click

        '20 씩 밝기 감소
        pictureBox1.Image = BrightnessImage(pictureBox1.Image, -20)

    End Sub

    Private Function BrightnessImage(ByVal imSource As Image, ByVal iBrightness As Integer) As Bitmap
        Dim btTmp As Bitmap = New Bitmap(imSource)
        Dim cTmp As Color
        Dim iR As Integer, iG As Integer, iB As Integer

        For iY As Integer = 0 To btTmp.Height - 1
            For iX As Integer = 0 To btTmp.Width - 1
                cTmp = btTmp.GetPixel(iX, iY)

                iR = Math.Max(0, Math.Min(255, cTmp.R + iBrightness))
                iG = Math.Max(0, Math.Min(255, cTmp.G + iBrightness))
                iB = Math.Max(0, Math.Min(255, cTmp.B + iBrightness))

                cTmp = Color.FromArgb(iR, iG, iB)
                btTmp.SetPixel(iX, iY, cTmp)
            Next
        Next

        Return btTmp

    End Function

    
End Class

 

 

* 예제 결과

 

- 이미지 파일 열기...

 

- 밝기 조절 없이 기본 화면

 

- 밝기 100 정도 된 화면

- 밝기 -100 정도 된 화면



반응형
반응형

* C# 이미지 밝기 조절 (Image Brightness) 예제...

 

Main

- 사용한 컨트롤 : Button 3개, PictureBox 1개

 

전체 소스 코드

Form1.cs

 

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

namespace CSharp_ImageBrightness
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "JPG File(*.jpg) | *.jpg"; 
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                pictureBox1.Image = new Bitmap(ofd.FileName);
            }

        }

        private void button2_Click(object sender, EventArgs e)
        {
            //20 씩 밝기 증가
            pictureBox1.Image = BrightnessImage(pictureBox1.Image, 20);
        }

        private void button3_Click(object sender, EventArgs e)
        {
            //20 씩 밝기 감소
            pictureBox1.Image = BrightnessImage(pictureBox1.Image, -20);
        }

        private Bitmap BrightnessImage(Image imSource, int iBrightness)
        {
            Bitmap btTmp = new Bitmap(imSource);
            Color cTmp;
            int iR, iG, iB;

            for (int iY = 0; iY < btTmp.Height; iY++)
            {
                for (int iX = 0; iX < btTmp.Width; iX++)
                {
                    cTmp = btTmp.GetPixel(iX, iY);

                    iR = Math.Max(0, Math.Min(255, cTmp.R + iBrightness));
                    iG = Math.Max(0, Math.Min(255, cTmp.G + iBrightness));
                    iB = Math.Max(0, Math.Min(255, cTmp.B + iBrightness));

                    cTmp = Color.FromArgb(iR, iG, iB);
                    btTmp.SetPixel(iX, iY, cTmp);
                }
            }

            return btTmp;

        }

    }
}

 

* 예제 결과

 

- 이미지 파일 열기...

 

- 밝기 조절 없이 기본 화면

 

- 밝기 100 정도 된 화면

- 밝기 -100 정도 된 화면

반응형
반응형

* C# IronPython 설치 및 파이썬(Python) 함수들 불러 오기 예제...

 

Main

- 사용한 컨트롤 : Button 1개, TextBox 1개

- 개발 환경 : Visual Studio 2019 윈도우 10 64 bit 및 아나콘다3, Python3.7 파이참 설치 되어 있는 상황

                 아나콘다가 설치 되어 있어서 따로 설치를 하지는 않았음.

 

* IronPython 설치

메뉴에서 도구 -> Nuget 패키지 관리자 -> 패키지 관리자 콘솔 로 들어 갑니다.

 

그럼 위 그림 처럼 아래 하단에 패키지 관리자 콘솔 창이 나오게 되면 install-Package IronPython -Version 2.7.9 를 입력

해 줍니다. 그럼 그림처럼 패키지 설치를 하게 되는데

여기서 닷넷 프레임 워크는 저는 4.7 이상으로 했습니다. 테스트 해 본 결과

닷넷 프레임 워크가 2,3 은 아예 설치가 되질 않습니다. 

 

위 설치가 다 되면 오른쪽 솔루션 탐색기 -> 참조에 IronPython, IronPython.Modules, ~ 및 Microsoft.Scripting, Microsoft.Scripting.Metadata DLL 들이 자동으로 참조 추가 됨.

설치가 끝나게 되고 자동 으로 DLL 들이 참조가 되면 이제부터 아래와 같이 Python 예제 파일을 하나 만듭니다.

 

메모장을 열어 위 그림과 같이 코딩 후 저장 할 때 txt 파일이 아닌 모든 파일로 선택 후 test.py 확장자를 py 로 저장 합니다. 파일 위치는 쉽게 D: 나 C: 에 옮겨 놓습니다. 불러오기 편한 곳으로 옮겨 놓습니다.

 

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

using IronPython.Hosting;

namespace CSharp_IronPythonTest
{
    public partial class Form1 : Form
    {
        
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //파이썬 엔진 실행...
            var peEngine = Python.CreateEngine();
            var vScope = peEngine.CreateScope();

            try
            {
                //파이썬 파일 연결
                var vSource = peEngine.CreateScriptSourceFromFile("D:\\test.py");
                vSource.Execute(vScope);

                //파이썬 소스 코드 안 함수들 불러오기...
                var getReturnValue = vScope.GetVariable<Func<string>>("testPythonFunc");
                textBox1.Text = getReturnValue() + System.Environment .NewLine ;

                var vSum = vScope.GetVariable<Func<int, int, int>>("testsum");
                textBox1.Text += vSum(5, 8).ToString();

            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString());
            }


        }
    }
}

* 예제 결과

 

 

 

반응형
반응형

*C# Json 을 이용한 간단한 로또 당첨번호 확인 예제...

 

Main

- 사용한 컨트롤 : Button 1개, Label 3개, TextBox 8개, GroupBox 1개

 

- 참조 소스 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제 :: 삽질하는 개발자... (tistory.com)

 

[C#] Json Read 를 이용한 로또(Lotto) 당첨 번호 읽기 예제

* C# Json Parsing 을 이용한 로또 (Lotto) 당첨 번호 읽어 오기 예제... 전체 소스 코드 Form1.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using Sy..

kdsoft-zeros.tistory.com

전체 소스 코드

Form1.cs

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

//json 참조 추가
using System.Net.Json;
using System.Net;
using System.IO;

namespace Lotto_1
{
    public partial class Form1 : Form
    {
        int iCount = 0;
        List<int> ltResult = new List<int>();
        public Form1()
        {
            InitializeComponent();
        }

        #region 사용자 정의함수...
        private bool IsNullString(string str)
        {
            return string.IsNullOrEmpty(str);
        }

        private int IsInt(object ob)
        {
            if (ob == null) return 0;

            int iCheck = 0;
            bool bCheck = int.TryParse(ob.ToString(), out iCheck);

            if (!bCheck)
            {
                return 0;
            }

            return iCheck;
        }

        private string GetHttpLottoString(string strUri)
        {
            string strResponseText = string.Empty;

            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(strUri);
            request.Method = "GET";

            //웹리퀘스트 타임아웃 
            request.Timeout = 20 * 1000; // 20초
            //request.Headers.Add("Authorization", "BASIC SGVsbG8="); // 헤더 추가 방법

            //응답 받기
            using (HttpWebResponse hwr = (HttpWebResponse)request.GetResponse())
            {
                //응답이 정상적으로 이루어 졌으면... 
                if (hwr.StatusCode == HttpStatusCode.OK)
                {
                    Stream respStream = hwr.GetResponseStream();
                    using (StreamReader sr = new StreamReader(respStream))
                    {
                        strResponseText = sr.ReadToEnd();
                    }
                }
                else
                {
                    strResponseText = "";
                }
            }

            return strResponseText;
        }
        
        private bool isCheck()
        {
            //Lotto Number 당첨 번호 읽어 오기...
            if (IsNullString(textBox1.Text) && IsNullString(textBox2.Text) && IsNullString(textBox3.Text) && IsNullString(textBox4.Text)
                && IsNullString(textBox5.Text) && IsNullString(textBox6.Text) )
            {
                MessageBox.Show("빈 값일 순 없습니다.");
                return false ;
            }

            //숫자가 아니면...
            if (IsInt(textBox1.Text) == 0 && IsInt(textBox2.Text) == 0 && IsInt(textBox3.Text) == 0 && IsInt(textBox4.Text) == 0 &&
                IsInt(textBox5.Text) == 0 && IsInt(textBox6.Text) == 0 )
            {
                MessageBox.Show("숫자만 입력 해 주세요.");
                return false;
            }

            //회차 번호 체크
            if (IsInt(textBox8.Text) == 0 && IsNullString(textBox8.Text))
            {
                MessageBox.Show("숫자만 입력 또는 빈 값일 순 없습니다.");
                textBox8.Text = "";
                textBox8.Focus();
                return false;
            }

            return true;
        }

        private void Check_Result(int iNumber )
        {
            //-2 한 값은 마지막 보너스 넘버 는 체크 안함...
            for (int i = 0; i <= ltResult.Count - 2; i++)
            {
                if(iNumber == ltResult[i])
                {
                    iCount++;
                    return;
                }
            }
        }


        private void MessageResult(int iBonus)
        {
            switch(iCount )
            {
                case 6:
                {
                    lblResult.Text ="축하 드립니다. 1등에 당첨 되셨습니다.";
                    break;
                }
                case 5:
                {
                    if (iBonus == 1)
                    {
                         lblResult.Text = "축하 드립니다. 2등에 당첨 되셨습니다.";
                     }
                    else
                    {
                         lblResult.Text = "축하 드립니다. 3등에 당첨 되셨습니다.";
                    }
                    break;
                }
                case 4:
                {
                    lblResult.Text = "축하 드립니다. 4등에 당첨 되셨습니다.";
                    break;
                }
                case 3:
                {
                    lblResult.Text = "축하 드립니다. 5등에 당첨 되셨습니다.";
                    break;
                }
                default:
                {

                    lblResult.Text = "꽝 입니다. 다음 기회에...반드시 성공을...";
                    break;
                }
            }
        }

        #endregion 

        private void button1_Click(object sender, EventArgs e)
        {
            List<int> ltLottoNumber = new List<int>();
            int iBonus =0;

            ltResult.Clear();
            //Count 값 초기화...
            iCount = 0;

            //체크
            if(!isCheck ())
            {
                return;
            }
            ltLottoNumber.Add(Convert.ToInt32(textBox1.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox2.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox3.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox4.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox5.Text.Trim()));
            ltLottoNumber.Add(Convert.ToInt32(textBox6.Text.Trim()));

            //로또 회차 넘버 불러오기...
            string strReturnValue = GetHttpLottoString("https://www.dhlottery.co.kr/common.do?method=getLottoNumber&drwNo=" + textBox8.Text);

            if (strReturnValue == "")
            {
                MessageBox.Show("Lotto Number 불러오기 실패...");
                return;
            }

            //Json 으로 바꾸기...
            JsonTextParser jtr = new JsonTextParser();
            JsonObject jo = jtr.Parse(strReturnValue);
            JsonObjectCollection jac = (JsonObjectCollection)jo;

            //불러오기가 성공 하면...
            if (jac["returnValue"].GetValue().ToString() == "success")
            {
                //담기...
                ltResult.Add(Convert.ToInt32(jac["drwtNo1"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo2"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo3"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo4"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo5"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["drwtNo6"].GetValue().ToString().Trim()));
                ltResult.Add(Convert.ToInt32(jac["bnusNo"].GetValue().ToString().Trim()));
                textBox7.Text = jac["bnusNo"].GetValue().ToString().Trim();
            }
            //Check Result
            for (int i = 0; i <= ltLottoNumber.Count - 1; i++)
            {
                Check_Result(ltLottoNumber[i]);

                if(ltLottoNumber[i] == ltResult[ltResult.Count-1])
                {
                    iBonus = 1;
                }
            }
            //Result
            MessageResult(iBonus );

        }

        private void textBox8_KeyDown(object sender, KeyEventArgs e)
        {
            if(e.KeyCode == Keys.Enter )
            {
                button1_Click(null, null);
            }
        }
    }
}

* 예제 결과

 

결과 화면

 

반응형
반응형

* C# 랜덤(Random) 클래스를 이용한 간단한 로또(Lotto) 숫자 생성 예제...

 

 

- 사용한 컨트롤 : Button 1개, Label 1개, TextBox 1개

 

전체 소스 코드

Form1.cs

 

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

namespace CSharp_LottoNumber
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //텍스트 박스 초기화...
            textBox1.Text = "";
            textBox1.Text = Create_LottoNumber();
        }

        private string Create_LottoNumber()
        {
            string strTmp = "";
            string strNumber = "";
            string strBonusNumber = "";
            int[] imsiNum = new int[7];

            for (int i = 0; i < 7; i++)
            {
                Random rnd = new Random();
                //1 부터 45 숫자 중...
                imsiNum[i] = rnd.Next(1,45);
                for (int j = 0; j < i; j++)
                {
                    if (imsiNum[i] == imsiNum[j])
                    {
                        i = i - 1;
                    }
                }
            }
            strTmp = string.Join(", ", imsiNum);
            //Lotto Number ...
            strNumber = strTmp.Substring(0, strTmp.LastIndexOf(',')-1);
            //끝에 있는 BonusNumber ...
            strBonusNumber = strTmp.Substring(strTmp.LastIndexOf(',')+1,2).Trim();
            return "Lotto Number : " + strNumber + ", BonusNumber : " + strBonusNumber;
        }

    }
}

 

 

 

*예제 결과

 

반응형
반응형

* VBNET 프로그램 버전 확인(Program Version Check) 예제...

 

 

 

 

- 사용한 컨트롤 : Button 1개, Label 1개

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        'Program Version Check...
        label1.Text = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString()
    End Sub
End Class

비주얼 스튜디오로 버전 확인 방법

 

어셈블리 정보 클릭

 

 

어셈블리 버전 으로 확인 가능 

 

*예제 결과

 




반응형
반응형

* VBNET 노트북 배터리 정보 예제...

 

Main

 

- 사용한 컨트롤 : Button 2개, TextBox 2개, Label 3개, 프로그래스바 1개, Timer 1개

 

전체 소스 코드

Form1.vb

 

Public Class Form1

    Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
        MyBase.OnLoad(e)

        timer1.Interval = 1000 '1초마다...
    End Sub

    Protected Overrides Sub OnClosed(ByVal e As System.EventArgs)
        MyBase.OnClosed(e)
        timer1.Stop()
    End Sub


    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click
        timer1.Start()
    End Sub

    Private Sub button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button2.Click
        timer1.Stop()
    End Sub

    Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles timer1.Tick
        Dim psStatus As PowerStatus = SystemInformation.PowerStatus

        '충전 상태
        txtChargeStatus.Text = psStatus.BatteryChargeStatus.ToString()

        '전원 상태
        txtPoerStatus.Text = psStatus.PowerLineStatus.ToString()

        '충전 비율
        If psStatus.BatteryLifePercent <> 255 Then
            pbCharge.Value = Convert.ToInt32(psStatus.BatteryLifePercent * 100)
        Else
            pbCharge.Value = 0
        End If

        '잔여 사용 시간
        If psStatus.BatteryLifeRemaining <> -1 Then
            textBox1.Text = TimeSpan.FromSeconds(psStatus.BatteryLifeRemaining).ToString()
        Else
            textBox1.Text = "-------"
        End If
        '완충시 사용 시간
        If psStatus.BatteryFullLifetime <> -1 Then
            textBox2.Text = psStatus.BatteryFullLifetime.ToString()
        Else
            textBox2.Text = "-------"
        End If


    End Sub

End Class

 

 

*예제 결과

 

 

반응형
반응형

* C# 프로그램 버전 확인(Program Version Check) 예제...

 

 

 

 

- 사용한 컨트롤 : Button 1개, Label 1개

 

전체 소스 코드

Form1.cs

 

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

namespace CSharp_ProgramVersionCheck
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //프로그램 버전 확인
            label1.Text  = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

        }
    }
}

 

비주얼 스튜디오로 버전 확인 방법

 

 

어셈블리 버전 으로 확인 가능 

 

*예제 결과

 

반응형

+ Recent posts