GSI

delegate (위임) 사용법

C# 2007. 10. 19. 13:49 |

Delegate 사용법

C#은 C언어에는 없는 위임이라는 독특한 특징을 도입했다. 기본적으로 위임이란, 같은 인터페이스를 만족시키는 한, 어느 클래스로부터 홨는지알지 못하더라도 넘겨주고 사용할 수 있는 다른 클래스에 있는 함수의 참조이다.

사용자 삽입 이미지

심플 예제

위의 화면에서 보는것과 같이 위쪽에 TextBox에 입력한 문자열을 Process를 누르게 되면
대문자 또는 소문자를 자동으로 만들어 주는 기능을 한다.
이때 Capital, Lower를 체크 해주게 되는데
내부적인 코드는 아래와 같다.

namespace WindowsFormsApplication4
{
    public partial class Form1 : Form
    {
        private delegate string fTxDelegate(string s);
        fTxDelegate ftx;

        public Form1()
        {
            InitializeComponent();
        }

        private void radioButton1_CheckedChanged(object sender, EventArgs e)
        {
            button1.Enabled = true;

            ftx = new fTxDelegate(new Capital().fixText);
        }

        private void radioButton2_CheckedChanged(object sender, EventArgs e)
        {
            button1.Enabled = true;

            ftx = new fTxDelegate(new Lower().fixText);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            listBox1.Items.Add(ftx(textBox1.Text));
        }
    }

    public class Capital
   {
        public string fixText(string s) {
            return s.ToUpper();
        }
    }

    public class Lower
   {
        public string fixText(string s) {
            return s.ToLower();
        }
    }
}

fix 메서드는 어떤 fixText를 호출할지를 자동으로 결정해 준다.

Posted by gsi
:

IT 도서관

Etc 2007. 10. 17. 23:06 |

각종 알고리즘 및 번역 자료등
많은 공부할 자료가 잘 정리 되어 있는 곳이네요.

http://www.galexandria.com/doc/index.php/%EB%8C%80%EB%AC%B8
Posted by gsi
:

Asp.NET 에 있는 GridView는 기본적인 기능만으로도 활용도가 정말 좋은거 같다.
가장 좋은건 페이지 기능이 제일 맘에 드는거 같다.

업데이트, 삭제 등도 바로 지원하면서
디테일 뷰와 연동하면 기본적인 DB 제어가 가능해 진다.

하지만 기본적인 레이아웃으로만 사용해서 부족한 부분에서는 아래와 같이
TemplateField를 사용하게 되면 더 다양한 뷰를 생성할 수 있다.

아래는 GridView의 한 부분이다.

    <asp:GridView ID="GridView1" runat="server" AllowPaging="True"
        AutoGenerateColumns="False" CssClass="gridview"
        DataSourceID="SqlDataSource1" PageSize="6">
        <Columns>
            <asp:TemplateField HeaderText="선택">
                <ItemTemplate>
                    <asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Eval("Item_name") %>' />
                </ItemTemplate>
            </asp:TemplateField>
            <asp:templatefield HeaderText="아이콘">
                <itemtemplate>
                    <asp:Image ID="Image1" runat="server" ImageUrl='<%# Eval("view_img", "~\\Images\\object_icon_obj\\wi_{0}.png") %>' />                   
                    <!--<asp:Label ID="item_name1" runat=server Text='<%# Eval("Item_name") %>'  />-->
                    <asp:Label ID="uid1" runat=server Text='<%# Eval("uid") %>'  />
                </itemtemplate>
            </asp:templatefield>
        </Columns>
    </asp:GridView>

<asp:templatefield> 이걸로 묶어 주고
내부에 label, image 등등을 넣어서 레이아웃을 구성해 준다.

image 같은 경우에 url을 구성할 경우 format 정보가 필요할때가 있다.
Eval()함수를 사용해서 할때 2번째 인자 값을 사용하면 확장을 할 수가 있다.
Posted by gsi
:

사용자 삽입 이미지

DB를 생성한 후에 GridView 등에서 사용할때 위와 같이 막혀 있는 경우가 종종 있다.
나만 그런가 하고 DB를 수없이 바꿔 보고 해봤지만.
결국은 다른데 문제가 있었다.

1. DB를 생성한 후에 기본키 생성이 안되어 있을때.
2. Configure Data Source 창에서 기본키가 Select 되지 않았을때.

이럴 경우 위와 같이 화면이 나오게 된다.
Posted by gsi
:

C# 기초 - 배열

C# 2007. 10. 15. 16:47 |

배열
정수형 배열은 아래와 같이 선언
int [] array;

배열 선언시 몇개의 요소를 가질것인지 선언해야 한다.
5개의 값을 갖는 배열을 선언
int [] array = new int[5];
array[0] = 100;
int value = array[0];

배열의 크기는 array.Length로 구할 수 있습니다.
반복문을 사용할 때 유용합니다.
for(int i = 0; i < array.Length; i++) {
   array[i] = i * 100;
   ...
}

배열 초기화
int [] array = { 1, 2, 3, 4, 5 };

int [] array;
array = new int [] { 1, 2, 3, 4, 5 };
array = { 1, 2, 3, 4, 5 }; //이렇게는 사용할 수 없습니다.

string [] sarray = { "first", "second", "third" };

//값을 나중에 초기화한 경우
string [] sarray;
sarray = new string [] { "first", "srcond", "third" };

Array 객체
C# 언어에서 배열은 고유한 데이터형입니다. Array 객체는 배열에서 사용할 수 있는 다양한 메시드와 멤버를 제공합니다.

int value = Array.Length; //배열의 길이를 리턴합니다.
Array.Sort( arr ); // 배열에 있는 요소 값을 정렬합니다.
Array.Reverse( arra ); //배열에 요소 값을 거꾸로 배치합니다.
int index = Array.IndexOf( arr, Value ); //배열의 처음부터 값을 찾기 시작해서 맨 처음 찾은 값의 위치를 알려 줍니다.
int index = Array.LastIndexOf( arr, value ); //배열의 끝에서 부터 거꾸로 찾아서 위치를 알려 줍니다.
int index = Array.BinarySearch( arr, value ); //배열에서 Binary search를 수행합니다.

foreach 문
for문을 이용해서 배열 값을 보일수도 있고, foreach 문을 이용할 수도 있습니다. foreach문은 배열의 처음부터 순서대로 값을 보여줍니다. 인덱스 값을 따로 지정할 필요가 없습니다.
foreach ( string str in arr )
{
   Response.Write (str );
}

다차원 배열

int [,] array; // 2차원 배열 선언
array = new int [3, 3];
int [,,] array; // 3차원 배열 선언

array [1, 2] = 100; //2행 3렬에 값 넣기

다차원 배열 초기화
배열을 선언하면서 바로 요소 값을 초기화할 수도 있습니다. 값을 정의하는 각 열마다 {,}를 이용해서 구분해 줍니다. 다음 두 문장은 같은 배열을 선언하는 코드입니다. new int [,]은 마찬가지로 생략할 수 있습니다.

int [,] array = new int [,] { {1, 2, 3}, {4, 5, 6} };
int [,] array = { {1, 2, 3}, {4, 5, 6} };


Posted by gsi
:

C# 기초 - 기본 데이터형

C# 2007. 10. 15. 16:29 |

기본 데이터형
C# 언어에서 제공하는 기본 데이터형은 값 형과 레퍼런스 형으로 나눌 수 있습니다. object 형과 string형은 레퍼런스(reference)형이고 나머지 기본 데이터형은 모두 값(value)입니다.

▶ 정수형과 실수형
▶ 논리형과 문자형
▶ object 형과 string 형

정수형

sbyte : 8비트 : -128 ~ 127
byte : 8비트 : 0 ~ 255
short : 16비트 : -32,768 ~ 32,767
ushort : 16비트 : 0 ~ 65,535
int : 32비트
uint : 32비트
long : 64비트  (ex : long l = 200L; )
ulong : 64비트 (ex : ulong ul = 300UL; )

실수형
float : 7 digits (ex : float f = 123.45F; )
double : 5 digits (ex : double d = 123.45D; )

Decimal 형
decimal 형은 실수형보다 더 큰 숫자를 다룰 때 사용합니다.

decimal : 128비트 (ex : decimal x = 12.345M; )

논리형
true 또는 false를 갖는 변수

문자형

문자를 표현하는 데이터 형입니다. 16비트 크기를 가지며 유니코드(Unicode) 형태로 문자를 다룹니다.

char c1 = 'x';              // 문자 'x'
char c2 = '\x0058';     // 16진수 값
char c3 = (char)88;     // 정수 값을 문자형으로 변환
char c4 = '\u0058';    // 유니코드

object  형

모든 C#의 데이터 형은 object을 상속받아 정의된 것이다.

object obj = 1234;
object obj = "C# programming";

string 형

문자열을 다루는 데이터 형입니다.

string name = "C# Programming";

enum 형
이넘(enum)은 정수형 상수를 정의할 때 사용합니다.

public enum Color {Red, Green, Blue };

Posted by gsi
:

간단한 오픈지엘을 사용한 화면 구현을 할려고 하다 보니 몇가지 경우가 생기게 되네요.

[조건]
1. OBJ 파일을 로딩해서 화면에 드로잉 한다.
2. OBJ 파일의 MTL 파일을 같이 적용한다.
3. 텍스처가 등록되어 있는 경우와 등록되어 있지 않는 경우가 있다.

.....

이렇다고 했을때 화면에 드로잉 하는 객체를 표현해 줄때,
1. 메트리얼 값을 사용해서 색상 정보로만 표현하고 싶을때가 있다.
2. 텍스처만 사용해서 표현하고 싶어진다.
3, 텍스처와 메트리얼 값을 같이 적용해서 사용하고 싶어질때가 있다.

위와 같이 3가지의 경우가 생기게 된다.

1, 3번의 경우는 glEnable(GL_COLOR_MATERIAL) 를 적용하지 않아야 한다.
2 번의 경우만 표현하고 싶다면 glEnable(GL_COLOR_MATERIAL) 이 옵션을 켜야 한다.

이게 맞는지는 잘 모르겠다 ^^.. dip2K 주인님인 김형준님에게 질문 하세요 ^^

아뭍턴.. 간단한 뷰어용 엔진을 제작함에 있어서 이 부분을 적용해서 해봐야 할거 같다.
Posted by gsi
:

이전에도 소스를 여기에 올린적이 있는듯 하다.
Tool3D 라이브러리를 사용해서 적용하는 3D의 효과를 어떻게 구현할지 이것을 가지고 생각을 해보자.

[관련 이미지]

사용자 삽입 이미지

Cube에 InteractiveMesh 적용 예





















[관련 소스]

Posted by gsi
:

색상표

Etc 2007. 10. 5. 14:19 |

괜찮은 색상표 하나 구하기가 이렇게 어려울 줄이야...

 

※ 원하는 색깔을 드래그해서 복사하십시오.
#93DAFF #98DFFF #9DE4FF #A2E9FF #A7EEFF #ACF3FF #B0F7FF #B4FBFF #B9FFFF #C0FFFF
#87CEFA #91D8FA #A5D8FA #AFDDFA #B9E2FA #C3E7FA #CDECFA #D7F1FA #E1F6FA #EBFBFF
#00BFFF #0AC9FF #14D3FF #1EDDFF #28E7FF #32F1FF #3CFBFF #46FFFF #96FFFF #C8FFFF
#00A5FF #00AFFF #00B9FF #00C3FF #00CDFF #00D7FF #00E1FF #00EBFF #00F5FF #00FFFF
#1EA4FF #28AEFF #32B8FF #3CC2FF #46CCFF #50D6FF #5AE0FF #6EE0FF #6EEAFF #78F3FF
#1E90FF #289AFF #32A4FF #3CAEFF #46B8FF #50C2FF #5ACCFF #64D6FF #6EE0FF #78EAFF
#96A5FF #A0AFFF #AAB9FF #B4C3FF #BECDFF #C8D7FF #D2E1FF #DCEBFF #E8F5FF #F4FFFF
#86A5FF #90AFFF #9AB9FF #A4C3FF #AECDFF #B8D7FF #CCE1FF #E0EBFF #EBF5FF #F9FFFF
#6495ED #6E9FED #78A9ED #82B3ED #8CBDED #96C7ED #A0D1F7 #AADBFF #B4E5FF #BEEFFF
#0078FF #0A82FF #148CFF #1E96FF #28A0FF #32AAFF #3CB4FF #46BEFF #50C8FF #5AD2FF
#0064FF #0A6EFF #1478FF #1E82FF #288CFF #3296FF #3CA0FF #46AAFF #50B4FF #5ABEFF
#0000FF #3232FF #5050FF #646EFF #6478FF #6482FF #648CFF #6496FF #64A0FF #64AAFF
#4169E1 #4B73E1 #557DE1 #5F87E1 #6991E1 #739BE1 #7DA5E1 #87AFEB #91B9F5 #9BC3FF
#0064CD #0A6ECD #1478CD #1E82CD #288CD2 #3296D7 #3CA0E1 #46AAEB #50B4F5 #5ABEF5
#5A5AFF #6464FF #6E6EFF #7878FF #8282FF #8C8CFF #A0A0FF #B4B4FF #C8C8FF #D2D2FF
#7B68EE #8572EE #8F7CEE #9986EE #A390EE #AD9AEE #B7A4EE #C1AEEE #CBB8EE #D5C2EE
#6A5ACD #7E6ECD #8878CD #9282CD #9C8CCD #A696CD #B0A0CD #BAAAD7 #C4B4E1 #CEBEE1
#0000CD #2828CD #4646CD #6464CD #6E6ED7 #7878E1 #8282EB #8C8CF5 #9696FF #A0A0FF
#00008C #14148C #28288C #3C3C8C #50508C #646496 #7878AA #8C8CBE #A0A0C8 #B4B4DC
#483D8B #52478B #5C518B #665B8B #70658B #7A6F95 #84799F #8E83A9 #988DB3 #A297BD
#000069 #1E3269 #323C73 #3C467D #3C5087 #3C5A91 #46649B #506EA5 #5A78AF #6482B9

#3DFF92 #47FF9C #51FFA6 #5BFFB0 #65FFBA #6FFFC4 #79FFCE #75FFCA #7AFFCF #7FFFD4
#55EE94 #5FEE9E #69EEA8 #73EEB2 #7DEEBC #87EEC6 #91F8D0 #9BFFDA #A5FFE4 #AFFFEE
#66CDAA #70D2B4 #7AD7BE #84DCC8 #8EE1D2 #98EBDC #9DF0E1 #A2F5E6 #A7FAEB #ACFFEF
#AAEBAA #B4F0B4 #BEF5BE #C8FAC8 #D2FFD2 #DCFFDC #E1FFE1 #E6FFE6 #EBFFEB #F0FFF0
#80E12A #8AE634 #94EB3E #9EF048 #A8F552 #B2FA5C #BCFF66 #C1FF6B #C6FF70 #CBFF75
#52E252 #5CE75C #66EC66 #70F170 #7AF67A #84FB84 #89FB89 #8EFB8E #93FB93 #98FB98
#64CD3C #6ED746 #78E150 #82EB5A #8CF064 #96F56E #9BFA73 #A0FA78 #A5FA7D #AAFA82
#13C7A3 #18CCA8 #1DD1AD #22D6B2 #27DBB7 #2CE0BC #31E0C1 #36E0C6 #3BE0CB #40E0D0
#46B4B4 #50BEBE #5AC8C8 #64D2D2 #6EDCDC #73E1E1 #78E6E6 #7DEBEB #82F0F0 #87F5F5
#20B2AA #2ABCB4 #34C6BE #3ED0C8 #48DAD2 #52E4DC #57E9E1 #5CEEE6 #61F3EB #66F8F0
#5F9EA0 #69A8AA #73B2B4 #7DBCBE #87C6C8 #91D0D2 #96D5D7 #9BDADC #A0DFE1 #A5E3E6
#3CB371 #46BD7B #50C785 #5AD18F #64DB99 #6EE5A3 #73EAA8 #78EFAD #7DF4B2 #82F9B7
#2E8B57 #389561 #429F6B #4CA975 #56B37F #60BD89 #65C28E #6AC793 #6FCC98 #74D19D
#228B22 #2C952C #369F36 #40A940 #4AB34A #54BD54 #5EC75E #63CC63 #68D168 #6DD66D
#497649 #538053 #5D8A5D #679467 #719E71 #7BA87B #80AD80 #85B285 #8AB78A #8FBC8F
#006400 #0A6E0A #147814 #1E821E #288C28 #329632 #3CA03C #41A541 #46AA46 #4BAF4B
#008C8C #0A9696 #14A0A0 #1EAAAA #28B4B4 #32BEBE #37C3C3 #3CC8C8 #41CDCD #46D2D2
#008080 #0A8A8A #149494 #1E9E9E #28A8A8 #32B2B2 #37B7B7 #3CBCBC #41C1C1 #46C6C6

#FFB6C1 #FFBBC6 #FFC0CB #FFC5D0 #FFCAD5 #FFCFDA #FFD4DF #FFD9E4 #FFDEE9 #FFE3EE
#FFAAAF #FFB4B9 #FFBEC3 #FFC8CD #FFD2D7 #FFDCE1 #FFE1E6 #FFE6EB #FFEBF0 #FFF0F5
#FF9E9B #FFA8A5 #FFB2AF #FFBCB9 #FFC6C3 #FFD0CD #FFD5D2 #FFDAD7 #FFDFDC #FFE4E1
#FF7A85 #FF848F #FF8E99 #FF98A3 #FFA2AD #FFACB7 #FFB1BC #FFB6C1 #FFBBC6 #FFC0CB
#FF5675 #FF607F #FF6A89 #FF7493 #FF7E9D #FF88A7 #FF92B1 #FF9CBB #FFA6C5 #FFB0CF
#FF82FF #FF8CFF #FF96FF #FFA0FF #FFAAFF #FFB4FF #FFBEFF #FFC8FF #FFD2FF #FFDCFF
#FF7DB4 #FF87BE #FF91C8 #FF9BD2 #FFA5DC #FFAFE6 #FFB4EB #FFB9F0 #FFBEF5 #FFC3FA
#FF69B4 #FF73BE #FF7DC8 #FF87D2 #FF91DC #FF9BE6 #FFA5F0 #FFAAF5 #FFAFFA #FFB4FF
#FF1493 #FF1E9D #FF28A7 #FF32B1 #FF3CBB #FF46C5 #FF50CF #FF5AD9 #FF64E3 #FF6EED
#DB7093 #DB7A9D #DB84A7 #E08EB1 #E598BB #EAA2C5 #EAB1D4 #EFACCF #F4BBDE #F4B6D9
#D7567F #DC6089 #E16A93 #E6749D #EB7EA7 #F088B1 #F592BB #FA9CC5 #FFA6CF #FFB0D9
#C71585 #C71F8F #C73399 #C73DA3 #CC47AD #D151B7 #D65BC1 #E065CB #EA6FD5 #F479DF
#CD1039 #CD1F48 #CD2E57 #CD3861 #CD426B #D24C75 #D7567F #DC6089 #E16A93 #E6749D
#B9062F #B91A4D #BE2457 #C32E61 #C8386B #CD4275 #D24C7F #D75689 #DC6093 #E16A9D

#FAEB78 #FAF082 #FAF58C #FAFA96 #FAFAA0 #FAFAAA #FAFAB4 #FAFABE #FAFAD2 #FAFAD2
#FFDC3C #FFE146 #FFE650 #FFEB5A #FFF064 #FFF56E #FFFA78 #FFFA82 #FFFF8C #FFFF96
#FFC81E #FFD228 #FFD732 #FFDC3C #FFE146 #FFE650 #FFEB5A #FFF064 #FFF56E #FFF978
#FFB400 #FFBE0A #FFC314 #FFC81E #FFCD28 #FFD232 #FFD73C #FFDC46 #FFE150 #FFE65A
#FDCD8C #FDD296 #FDD7A0 #FDDCAA #FDE1B4 #FDE6BE #FDEBC8 #FDF5D2 #FDF5DC #FDF5E6
#FAC87D #FACD87 #FAD291 #FAD79B #FADCA5 #FAE1AF #FAE6B9 #FAEBC3 #FAEBCD #FAEBD7
#FFA500 #FFAF0A #FFB914 #FFC31E #FFCD28 #FFD732 #FFDC37 #FFE13C #FFE641 #FFEB46
#FF9100 #FF9B00 #FFA500 #FFAF00 #FFB900 #FFC300 #FFC800 #FFCD00 #FFD200 #FFD700
#FF8200 #FF8C0A #FF9614 #FFA01E #FFAA28 #FFB432 #FFB937 #FFBE3C #FFC341 #FFC846
#FFA98F #FFB399 #FFBDA3 #FFC7AD #FFD1B7 #FFDBC1 #FFE0C6 #FFE5CB #FFEAD0 #FFEFD5
#FFA374 #FFAD7E #FFB788 #FFC192 #FFCB9C #FFD0A1 #FFD5A6 #FFDAAB #FFDFB0 #FFE4B5
#FF9473 #FF9E7D #FFA887 #FFB291 #FFBC9B #FFC6A5 #FFD0AF #FFD0AF #FFD5B4 #FFDAB9
#FF7F50 #FF895A #FF9364 #FF9D6E #FFA778 #FFB182 #FFBB8C #FFC091 #FFC596 #FFCA9B
#CD853F #CD8F49 #D29953 #D7A35D #DCAD67 #E1B771 #E6C17B #EBC680 #F0CB85 #F5D08A
#D2691E #D27328 #D27D32 #D7873C #DC9146 #E19B50 #E6A55A #EBAA5F #EBAF64 #F0B469
#AE5E1A #B86824 #C2722E #CC7C38 #D68642 #E0904C #E59551 #EA9A56 #EF9F5B #F4A460
#8B4513 #8B4F1D #8B5927 #8B6331 #906D3B #957745 #9F814F #A48654 #A98B59 #AE905E

#FF9696 #FFA0A0 #FFAAAA #FFB4B4 #FFBEBE #FFC8C8 #FFD2D2 #FFDCDC #FFE6E6 #FFF0F0
#F08080 #F08A8A #F09494 #F59E9E #FAA8A8 #FAB2B2 #FAB7B7 #FABCBC #FAC1C1 #FAC6C6
#F56E6E #F57878 #F58282 #F58C8C #F59696 #F5A0A0 #F5AAAA #FAB4B4 #FABEBE #FAC8C8
#F06464 #F06E6E #F07878 #F08282 #F08C8C #F09696 #F4A0A0 #F4AAAA #F4B4B4 #FEBEBE
#FF0000 #FF3232 #FF4646 #FF5050 #FF5A5A #FF6464 #FF6E6E #FF7878 #FF8282 #FF8C8C
#EB0000 #EB3232 #EB4646 #EB5050 #EB5A5A #EB6464 #F06E6E #F57878 #FA8282 #FA8C8C
#CD0000 #CD3C3C #CD4646 #CD5050 #D25A5A #D76464 #DC6E6E #E17878 #E68282 #EB8C8C
#CD5C5C #CD6666 #CD7070 #CD7A7A #D28484 #D78E8E #DC9898 #E6A2A2 #EBACAC #F0B6B6
#B90000 #B93232 #B93C3C #B94646 #B95050 #BE5A5A #C35F5F #C86464 #CD6969 #D26E6E
#B22222 #B24040 #B24A4A #B25454 #B75E5E #BC6868 #C17272 #CB7776 #CB7C7C #D08180
#A52A2A #AA3E3E #AF4848 #B45252 #BE5C5C #C36666 #CD7070 #CD7A7A #D28484 #D78E8E
#800000 #803232 #853C3C #8F4646 #945050 #9E5A5A #A36464 #AD6E6E #B77878 #C18282

#CD853F #CD8B45 #CD904A #D2954F #D29A54 #D79F59 #D7A45E #E1A963 #E1AE68 #E6B36D
#DB631F #E56D29 #E57733 #EA813D #EF8B47 #EF904C #F49551 #F49A56 #F49F5B #F4A460
#D2691E #D27328 #D77D32 #D7873C #DC9146 #E19B50 #E6A055 #EBA55A #F0AA5F #F5AF64
#A0522D #A05C37 #A06641 #A5704B #AA7A55 #B4845F #B98E69 #C39873 #CDA27D #D7AC87
#8B4513 #8B4F1D #8B5927 #8B6331 #906D3B #9A7745 #A4814F #AE8B59 #B89563 #C29F6D
#DA70D6 #DF75DB #E47AE0 #E97FE5 #EE84EA #F389EF #F88EF4 #FD93F9 #FF98FE #FF9DFF
#BA55D3 #BF5AD8 #C45FDD #C964E2 #CE69E7 #D36EEC #D873F1 #DD78F6 #E27DFB #E782FF
#9932CC #9E37D1 #A33CD6 #A841DB #AD46E0 #B24BE5 #B750EA #BC55EF #C15AF4 #C65FF9
#9400D3 #9905D8 #9E0ADD #A30FE2 #A814E7 #AD19EC #B21EF1 #B723F6 #BC28FB #C12DFF
#942894 #9E329E #A83CA8 #B246B2 #BC50BC #C65AC6 #D064D0 #DA6EDA #E478E4 #EE82EE
#8c008c #960a96 #a014a0 #aa1eaa #b428b4 #be32be #c83cc8 #d246d2 #dc50dc #e65ae6
#800080 #8a0a8a #941494 #9e1e9e #a828a8 #b232b2 #bc3cbc #c646c6 #d050d0 #da5ada
#834683 #8d508d #975a97 #a164a1 #ab6eab #b578b5 #bf82bf #c98cc9 #d396d3 #dda0dd
#828282 #8c8c8c #969696 #a0a0a0 #aaaaaa #b4b4b4 #bebebe #c8c8c8 #d2d2d2 #dcdcdc
#000000 #282828 #323232 #3c3c3c #464646 #505050 #5a5a5a #646464 #6e6e6e #787878



컬러 이름 16진수              
 red #FF0000    
crimson #DC143C    
firebrick #B22222    
maroon #800000    
darkred #8B0000    
brown #A52A2A    
sienna #A0522D    
saddlebrown #8B4513    
indianred #CD5C5C    
rosybrown #BC8F8F    
lightcoral #F08080    
salmon #FA8072    
darksalmon #E9967A    
coral #FF7F50    
tomato #FF6347    
sandybrown #F4A460    
lightsalmon #FFA07A    
peru #CD853F    
chocolate #D2691E    
orangered #FF4500    
orange #FFA500    
darkorange #FF8C00    
tan #D2B48C    
peachpuff #FFDAB9    
bisque #FFE4C4    
moccasin #FFE4B5    
navajowhite #FFDEAD    
wheat #F5DEB3    
burlywood #DEB887    
darkgoldenrod #B8860B    
goldenrod #DAA520    
gold #FFD700    
yellow #FFFF00    
lightgoldenrodyellow #FAFAD2    
palegoldenrod #EEE8AA    
khaki #F0E68C    
darkkhaki #BDB76B    
lawngreen #7CFC00    
greenyellow #ADFF2F    
chartreuse #7FFF00    
lime #00FF00    
limegreen #32CD32    
yellowgreen #9ACD32    
olive #808000    
olivedrab #6B8E23    
darkolivegreen #556B2F    
forestgreen #228B22    
darkgreen #006400    
green #008000    
seagreen #2E8B57    
mediumseagreen #3CB371    
darkseagreen #8FBC8F    
lightgreen #90EE90    
palegreen #98FB98    
springgreen #00FF7F    
mediumspringgreen #00FA9A    
teal #008080    
darkcyan #008B8B    
lightseagreen #20B2AA    
mediumaquamarine #66CDAA    
cadetblue #5F9EA0    
steelblue #4682B4    
aquamarine #7FFFD4    
powderblue #B0E0E6    
paleturquoise #AFEEEE    
lightblue #ADD8E6    
lightsteelblue #B0C4DE    
skyblue #87CEEB    
lightskyblue #87CEFA    
mediumturquoise #48D1CC    
turquoise #40E0D0    
darkturquoise #00CED1    
aqua #00FFFF    
cyan #00FFFF    
deepskyblue #00BFFF    
dodgerblue #1E90FF    
cornflowerblue #6495ED    
royalblue #4169E1    
blue #0000FF    
mediumblue #0000CD    
navy #000080    
darkblue #00008B    
midnightblue #191970    
darkslateblue #483D8B    
slateblue #6A5ACD    
mediumslateblue #7B68EE    
mediumpurple #9370DB    
darkorchid #9932CC    
darkviolet #9400D3    
blueviolet #8A2BE2    
mediumorchid #BA55D3    
plum #DDA0DD    
lavender #E6E6FA    
thistle #D8BFD8    
orchid #DA70D6    
violet #EE82EE    
indigo #4B0082    
darkmagenta #8B008B    
purple #800080    
mediumvioletred #C71585    
deeppink #FF1493    
fuchsia #FF00FF    
magenta #FF00FF    
hotpink #FF69B4    
palevioletred #DB7093    
lightpink #FFB6C1    
pink #FFC0CB    
mistyrose #FFE4E1    
blanchedalmond #FFEBCD    
lightyellow #FFFFE0    
cornsilk #FFF8DC    
antiquewhite #FAEBD7    
papayawhip #FFEFD5    
lemonchiffon #FFFACD    
beige #F5F5DC    
linen #FAF0E6    
oldlace #FDF5E6    
lightcyan #E0FFFF    
aliceblue #F0F8FF    
whitesmoke #F5F5F5    
lavenderblush #FFF0F5    
floralwhite #FFFAF0    
mintcream #F5FFFA    
ghostwhite #F8F8FF    
honeydew #F0FFF0    
seashell #FFF5EE    
ivory #FFFFF0    
azure #F0FFFF    
snow #FFFAFA    
white #FFFFFF    
gainsboro #DCDCDC    
lightgrey #D3D3D3    
silver #C0C0C0    
darkgray #A9A9A9    
lightslategray #778899    
slategray #708090    
gray #808080    
dimgray #696969    
darkslategray #2F4F4F    
black #000000    

Posted by gsi
:

WPF 이미지 표시하기

WPF 2007. 10. 5. 09:44 |

WPF 에서 이미지 표시하기

BitmapImage 는 XAML 로딩을 위해 최적화된 특수한 BitmapSource 이고 Image 컨트롤의  Source로 이미지를 표시하기 쉬운 방법입니다.

이미지 컨트롤 사용하기
Image는 프레임워크 엘리먼트이고 애플리케이션에서 이미지를 표시하는 주된 수단입니다. XAML 에서 Image는 어트리뷰트 문법 또는 프로퍼티 문법의 두 가지 방법으로 사용될 수 있습니다. 다음 예제는 어트리뷰트 문법과 프로퍼티 태그 문법을 모두 사용하여 이미지를 200 픽셀 너비로 그리는 바업ㅂ을 보여줍니다. 어트리뷰트 문법과 프로퍼티 문법의 더 자세한 정보는 Dependency Properties Overview를 참고 하십시오.

XAML
<!-- 간단한 이미지 렌더링. 그러나 이 방법으로 렌더링 하는 것은 애플리케이션 메모리의 사용량에는 좋지 않습니다. 같은 결과를 더 적은 메모리로 생성하는 아래쪽 마크업을 참고 하십시오. -->
<Image Width = "200" Source = "c:\Temp\aaa.jpg"/>

<Image Width = "200">
   <Image.Source>
      <!-- 상당한 애플리케이션 메모리를 아끼기 위해 이미지 소스의 BitmapImage의 DecodePixelWidth나 DecodePixelHeight 값을 원하는 높이와 너비로 설정하십시오. 그렇게 하지 않으면 애플리케이션은 이미지를 화면에 표시될 크기가 아닌 그것의 보통 크기로 렌더링 될 것이라고 생각하고 캐슁될 것입니다.-->
      <BitmapImage DecodePixelWidth = "200" UriSource = "c:\test\aaa.jpg"/>
   </Image.Source>
</Image>

다음 예제는 코드를 사용하여 이미지를 200 픽셀 너비로 그리는 방법을 보여줍니다.

노트 :
BitmapImage는 다중 속성에서 초기화 최적화를 위해 ISupportInitilize 인터페이스를 구현합니다. 속성 변경은 오직 객체 초기화 중에만 발생할 수 있습니다. 초기화가 시작되었음을 알리는 신호로 BeginInit을 호출하고 초기화가 완료되었음을 알리는 신호로 EndInit을 호출합니다. 일단 초기화 되면 속성 변경은 무시됩니다.

C#
// 이미지 엘리먼트 생성
Image myImage = new Image();
myImage.Width = 200;

//소스 생성
BitmapImage myBitmapImage = new BitmapImage();

// BitmapImage.UriSource는 반드시 BeginInit/EndInit 블럭 내에 있어야 합니다.
myBitmapImage.BeginInit();
myBitmapImage.UriSource = new Uri(@"c:\test\aaa.jpg");
myBitmapImage.DecodePixelWidth = 200;
myBitmapImage.EndInit();

//이미지 소스 설정
myImage.Source = myBitmapImage;

Posted by gsi
:

다이얼로그 투명하게..

C++ 2007. 10. 4. 11:29 |

BOOL SetLayeredWindowAttributes(
  HWND
hwnd,           // handle to the layered window
  COLORREF crKey,      // specifies the color key
  BYTE bAlpha,         // value for the blend function
  DWORD dwFlags        // action
);

typedef SLWA

선언:

typedef BOOL (WINAPI* SLWA)(HWND hWnd, COLORREF crKey, BYTE bAlpha, DWORD dwFlags);

#ifndef WS_EX_LAYERED
#define WS_EX_LAYERED       0x00080000
#define LWA_ALPHA           0x00000002
#endif

코딩:

void CDlgTestDlg::SetTransparency(HWND hwnd, int percent)
{
    SLWA pSetLayeredWindowAttributes = NULL;  // 함수포인터 선언, 초기화.
    HINSTANCE hmodUSER32 = LoadLibrary("USER32.DLL"); // 인스턴스 얻음.
    pSetLayeredWindowAttributes=(SLWA)GetProcAddress(hmodUSER32,"SetLayeredWindowAttributes");
    //함수포인터 얻음.
//  HWND hwnd = this->m_hWnd; //다이얼로그의 핸들 얻음.
    SetWindowLong(hwnd, GWL_EXSTYLE,GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED);
    pSetLayeredWindowAttributes(hwnd, 0, (255 * percent) / 100, LWA_ALPHA);
}

Posted by gsi
:

사용자 삽입 이미지

본 프로그램은 <<, >> 버튼을 사용해서 화면에 보여지는 4개의 기준 패널을 좌우로 자연스럽게 이동시키는 데모 입니다.
기존에는 이것을 비하인드 코드 단에서 어떻게 해볼려고 삽질을 많이 했는데.
사실 그게 필요가 없을수도 있을거 같내요.

화면에 보여지는 것은 5개이지만 사실 5개의 패널로 구성되어진 것을 보실수 있으며,
선택된 내용을 우측 하단의 반사 효과로 되어 있는 곳에 뿌려 지게 됩니다.

이 부분은 나중에 다르게 변형 가능할거 같구요.

이 모듈을 조금더 확장해서.
이미지 뷰어를 하나 만들어 봐야 할거 같습니다.

<해당 데모>

Posted by gsi
:

Posted by gsi
:

union 사용법

C++ 2007. 9. 30. 01:53 |

가끔 공용체가 편할때가 있다 ^^

 union {
  struct {
     float m11; float m12; float m13; float m14;
     float m21; float m22; float m23; float m24;
     float m31; float m32; float m33; float m34;
     float m41; float m42; float m43; float m44;
  };
  struct {
   float m4x4[4][4];
  };
  float m16[16];
 };
Posted by gsi
:

Expression 프로그램을 실행하다가 오류가 났다. 프로그램이 실행 되면서 바로 죽는 것이다.
DirectX 용 프로그램을 개발하다 보면 "Use Debug Version of Direct3D"로 설정해 놓고 하는게 대부분인데.. 그것 때문에 실행이 되지 않았던 것이다. ^^

Expression 용 프로그램을 테스트 하기 위해서는 "Use Retail Version of Direct3D" 로 체크 하기 바란다.

Posted by gsi
: