posted by By훈트 2011.01.03 12:20

디렉토리를 생성할때 디렉토리가 생성되어 있는지 검사도 해야 한다.

Directory 나 DirectoryInfo 를 사용하면 디렉토리 생성 및 검사도 가능하다.

방법#1

if (Directory.Exists(rootPath) == false)

    Directory.CreateDirectory(rootPath);

방법#2

DirectoryInfo di = new DirectoryInfo(rootPath);

if (di.Exists == false)

{

    di.Create();

}



저작자 표시
신고
posted by By훈트 2010.12.30 10:28
UIview
- 아이폰 화면에 보여지는 대부분은 View
 색, 그림, 버튼들을 가질 수 있다
- 드래그, 크기 조정,  등이 가능
- UIView는 GUI를 구성하는 단위 블록
- UIWindow는  UIView
01.//parentView(상위뷰)에 childView(하위뷰) 추가
02.[parentView addSubview:childView];
03. 
04.//parentView(상위뷰)가 가진 하위뷰들의 배열을 가져오기 (가장 뒤부터 가장 앞까지)
05.[parentView subview];
06. 
07.//childView(하위뷰)를 자신이 속한 상위뷰로부터 제거
08.[childView removeFromSuperview];
09. 
10.//i번째에 있는 하위뷰를 j번째에 있는 하위뷰와 순서를 바꿈
11.[parentView exchangeSubviewAtIndex:i withSubviewAtIndex:j];
12. 
13.//View의 투명도 조정 (value값은 0.0[완전투명]부터 1.0[완전불투명]까지)
14.[myView setAlpha:0.5];
15. 
16.//뷰의 배경색 지정
17.[myView setBackgroundColor:[UIColor redColor]];


CGPoint
- 포인트는  y 좌표로 정의된 위치를 말한다.
1.//x, y의 CGPoint를 생성한다.
2.CGPointMake(x, y);
3. 
4.//CGPoint를 문자열로 변환한다.
5.NSStringFromCGPoint(someCGPoint);
6. 
7.//문자열을 CGPoint로 변환한다.
8.CGPointFromString(aString);
 

CGSize
- 폭과 높이를 가지는 구조체
1.//width, height의 CGSize를 생성한다.
2.CGSizeMake(width, height);
3. 
4.//CGSize를 문자열로 변환한다.
5.NSStringFromCGSize(someCGSize);
6. 
7.//문자열을 CGSzie로 변환한다.
8.CGSizeFromString(aString);

 
CGRect
- 모든 View는 경계를  데 프레임을 사용한다.
- 프레임은 뷰의 위치, 폭, 높이와 같은  지정한다.
- 코어 그래픽 구조를 사용하여 프레임 직사각형을 정의한다.
 보통 시작점(CGPoint)과 크기(CGSize)로 구성된다.
01.//직사각형 정의
02.CGRectMake(origin.x, origin.y, size.width, size,height);
03. 
04.//CGRect 구조체를 특정 형식을 가진 문자열로 변환한다.
05.NSStringFromCGRect(someCGRect);
06. 
07.//위의 코드로 변환된 특정 형식을 가진 문자열을 CGRect구조체로 복구한다.
08.CGRectFromString(aString);
09. 
10.//직사각형의 위치에서 직사각형의 크기만큼 외곽을 잘라내거나 덧붙인 가운데 정렬된 직사각형을 만든다. 양수로는 잘라내고 음수로는 덧붙여 만들게 된다.
11.CGRectInset(aRect);
12. 
13.//직사각형 구조체 rect1과 rect2가 겹치는지 알 수 있다.
14.CGRectIntersectsRect(rect1, rect2);
15. 
16.//(0,0)에 가로, 세로 길이가 0인 직사각형 상수
17.CGRectZero;



Reference :  iPhone Developer's Cookbook - Erica Sadun

저작자 표시
신고
posted by By훈트 2010.12.29 17:42

[Objective-C]NSArray, NSMutableArray객체

[Objective-C] 2009/01/05 14:15
NSArray는 다른 객체 포인터들의 목록이다.

- 자주 사용되는 메소드
- (unsigned)count -> 현재 배열의 객체의 수를 리턴한다.
- (id)objectAtIndex:(unsigned)i -> i번째 위치한 객체를 리턴한다.
- (id)lastObject -> 현재 배열의 맨 마지막 객체를 리턴한다.
- (BOOL)containsObject:(id)anObject -> 현재의 배열에 anObject오브젝트를 포함하면 YES 아니면 NO
- (unsigned)indexOfObject:(id)anObject -> 리시버에서 anObject가 있는지 가장 낮은 색인부터 검색하  여 배열의 색인 값을 리턴한다. 찾지 못하면 NSNotFound를 리턴한다.

- NSMutableArray는 NSArray를 상속받았지만 객체를 삽입하고 삭제할 수 있도록 확장되었다.

자주 사용되는 메소드

             - (void)addObject:(id)anObject -> anObject를 리시버의 끝에 삽입한다. nil배열은 넣을 수 없다.

 - (void)addObjectsFromArray:(NSArray *)otherArray ->

 - (void)insertObject:(id)anObject atIndex:(unsigned)index -> 

             - (void)removeAllObjects -> 리시버에 포함된 모든객체를 제거한다.
             - (void)removeObject:(id)anObject -> 리시버 배열 안의 anObject를 삭제한다.
             - (void)removeObjectAtIndex;(unsigned)index -> index의 객체를 제거한다.


[출처] 마음으로 보는 블로그

저작자 표시
신고
posted by By훈트 2010.12.28 17:25

 

Sound is Style, beats by dr.dre

 

수많은 뮤지션과 프로듀서들이 추구하던 음질에 가깝게, 스튜디오에서 만들어낸 음질을 그대로 들을 수 있는

닥터 드레 헤드폰/이어폰 시리즈 들이 매그앤매그에 신규입고되었습니다!

 
고가이기 하지만, 강한 사운드와 비트감이 돈이 아깝지 않을정도로 listener의 진정한 기쁨이라고 해도 손색이 없습니다!

 

일명 '권지용' 헤드폰이라고 불리는 닥터 드레 헤드폰 시리즈.

GD, 2ne1의 CL, 박봄, Tiger JK 등등 정말 많은 국내 셀러브리티들의 it 헤드폰/이어폰입니다.

 

   

그럼, 해외스타들의 착용샷을 살펴볼까요?

 

 

Pharrell Williams, EMINEM, Kanye West, will.i.am (왼쪽위부터 시계방향)

 

 

Gwen Stefani

 

 

 그리고 요즘 hot issue인 LADY GAGA.

 레이디 가가와는 콜라보레이션한 이어폰까지 출시되었는데요. 레이디 가가 콜라보레이션 제품인

 Heartbeats™ by LADY GAGA 는 무섭게 솔드아웃되는 제품이니, 놓치지 마세요~!

 

 

 

Beats™ by Dr. Dre 제품보러가기

 

- Beats™ by Dr. Dre™_Studio click!

- Beats™ by Dr. Dre™_Tour CT click!

- Beats™ by Dr. Dre™_SOLO click!

- Heartbeats™ by LADY GAGA click!



[출처] MAG님의 블로그

저작자 표시
신고

'Daily > 훈트의일상' 카테고리의 다른 글

린소프트웨어 개발 방법론  (3) 2012.02.27
나이키 신발 사이즈  (0) 2011.03.11
Dr.Dre 헤드폰  (0) 2010.12.28
와우 방문자 1만찍었...ㄷㄷㄷ  (0) 2010.11.19
토탈 5000 뿌 ㅎㅎㅎ  (0) 2010.10.02
Total 1004 기념~~  (0) 2010.08.18
posted by By훈트 2010.12.14 17:56


object-c에서의 메모리 관리는 레퍼런스 카운트 (reference count)를 이용합니다.

모든 객체는 자신을 참조하는 수에 대한 내부 카운터를 가지고 있습니다.


-alloc : 해당 객체에 메모리를 할당하고 레퍼런스 카운트를 1 올립니다.

-retain : 해당 객체의 레퍼런스 카운트를 1 올립니다.

-copy : 해당 객체의 복사본을 만듭니다. 그리고 복사본의 레퍼런스 카운트를 1 올립니다.

-release : 해당 객체의 레퍼런스 카운트를 1 낮춥니다.

-autorelease : 정해지지 않은 시점에 해당 객체의 레퍼런스 카운트가 -1 낮아집니다.


규칙

1. 블록 내에서 alloc, retain, copy의 수와 release, autorelease 수가 동일해야 합니다.

2. factory 함수를 사용해 생성한 객체의 경우는 대부분 autorelease로 반환됩니다. 따로 release를 할 필요가 없습니다.

3. 클래스의 인스턴스 변수들은 dealloc 메소드에서 다 release해야 합니다.


예1. dealloc


- (void) dealloc

{

[vid release];

[title release];

}


예2. 로컬블록


{

NSString *name = [[NSString alloc] initWithString:@"Dreaming"];

NSString *co = [NSString stringWithString:"daum"];

NSString *book = @"iPhone Book";


//alloc만 release하면 됩니다.

[name release];

}


예3. autorelease 블록지정 : 해당블록의 autorelease메시지를 받은 객체들은 autorelease가 release되자마자 메모리에서 사라집니다.


NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

~~~

~~~

~~~

[pool release];


예4. 다양한 예


-(void) resetTitle

{

//alloc으로 인해 1 올라감

NSString *newTitle = [[NSString alloc] initWithString:@"A"];

[self setTitle:newTitle];    //접근자 사용

[newTitle release];         //메모리에서 제거

}


-(void) resetTitle

{

//factory함수로 autorelease가 됨, release할 필요 없음.

NSString *newTitle = [NSString stringWithString:@"A"];

[self setTitle:newTitle];      //접근자사용

}


NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];

int i;


for ( i = 0; i < 10; i++)

{

NSNumber *n = [NSNumber numberWithInt:i];

[array addObject:n];

}


NSNumber인 n을 생성했고 autorelease 메시지를 받아 언젠가 레퍼런스 카운트가 0으로 되어 사라질 것 같습니다만, 배열에 추가하는 addObject는 받는 인자를 바로 retain합니다. 그러니 한시적으로 레퍼런스 카운트가 2가 됩니다만 pool이 비워질 때 1이 되고, 배열이 사라질때 0이 됩니다.


NSMutableArray *array = [NSMutableArray arrayWithCapacity:10];

int i;


for ( i = 0; i < 10; i++)

{

NSNumber *n = [[NSNumber alloc] initWithInt:i];

[array addObject:n];

[n release];

}


[출처]새카만곰돌이님의 블로그

저작자 표시
신고
posted by By훈트 2010.12.08 09:44

 

  
void __fastcall ScrollBoxPaintTo(TScrollBox *ScrollBox,HDC DC,int X,int Y,int Wid,int Hei) 

    int I, EdgeFlags, BorderFlags, SaveIndex; 
    TRect R; 

    ScrollBox->ControlState=ScrollBox->ControlState<< csPaintCopy; 
    MoveWindowOrg(DC, X, Y); 
    IntersectClipRect(DC, 0, 0, Wid, Hei); 

    BorderFlags = 0; 
    EdgeFlags = 0; 

    if( GetWindowLong(ScrollBox->Handle, GWL_EXSTYLE) & WS_EX_CLIENTEDGE != 0 ) 
    { 
        EdgeFlags  = EDGE_SUNKEN; 
        BorderFlags = BF_RECT | BF_ADJUST; 
    } 
    else if( GetWindowLong(ScrollBox->Handle, GWL_STYLE) & WS_BORDER != 0 ) 
    { 
        EdgeFlags = BDR_OUTER; 
        BorderFlags = BF_RECT | BF_ADJUST | BF_MONO; 
    } 

    if( BorderFlags !=0) 
    { 
        R=Rect( 0, 0, Wid, Hei); 
        DrawEdge(DC, &R, EdgeFlags, BorderFlags); 
        MoveWindowOrg(DC, R.Left, R.Top); 
        IntersectClipRect(DC, 0, 0, R.Right - R.Left, R.Bottom - R.Top); 
    } 

    //일반 캡쳐의 경우 ... 
    //scroll전체 캡쳐를 위해 빼버림 
// ScrollBox->Perform(WM_ERASEBKGND, (int)DC, 0); 
// ScrollBox->Perform(WM_PAINT, (int)DC, 0); 

    for ( int i=0;i< ScrollBox->ControlCount;i++) 
    { 
        if(ScrollBox->Controls[i]->Visible) 
        { 
            if(ScrollBox->Controls[i]->InheritsFrom(__classid(TWinControl))) 
            { 
                ((TWinControl *)ScrollBox->Controls[i])->PaintTo(DC,ScrollBox->Controls[i]->Left+ScrollBox->HorzScrollBar->Position ,ScrollBox->Controls[i]->Top+ScrollBox->VertScrollBar->Position); 
            } 
            else if(ScrollBox->Controls[i]->InheritsFrom(__classid(TGraphicControl))) 
            { 
                 MoveWindowOrg(DC, ScrollBox->Controls[i]->Left+ScrollBox->HorzScrollBar->Position, ScrollBox->Controls[i]->Top+ScrollBox->VertScrollBar->Position); 
                ((TGraphicControl *)ScrollBox->Controls[i])->Perform(WM_PAINT,(int)DC,0);// PaintTo(DC,ScrollBox->Controls[i]->Left+ScrollBox->HorzScrollBar->Position ,ScrollBox->Controls[i]->Top+ScrollBox->VertScrollBar->Position); 
                 MoveWindowOrg(DC, -ScrollBox->Controls[i]->Left-ScrollBox->HorzScrollBar->Position, -ScrollBox->Controls[i]->Top-ScrollBox->VertScrollBar->Position);//MoveWindowOrg(DC, R.Left, R.Top); 
            } 
        } 
    } 
    ScrollBox->ControlState=ScrollBox->ControlState>>csPaintCopy;// Exclude(FControlState, csPaintCopy); 



Graphics::TBitmap * __fastcall GetScrollBoxImage(TScrollBox *ScrollBox) 

    if(ScrollBox==NULL)return NULL; 

    Graphics::TBitmap *bmp=NULL; 
    TRect rc=Rect(0,0,ScrollBox->HorzScrollBar->Range,ScrollBox->VertScrollBar->Range); 

    bmp=new Graphics::TBitmap; 

    bmp->Width=ScrollBox->HorzScrollBar->Range; //ScrollBox->ClientWidth; 
    bmp->Height=ScrollBox->VertScrollBar->Range; //ScrollBox->ClientHeight; 
    bmp->Canvas->Brush = ScrollBox->Brush; 
    bmp->Canvas->FillRect(rc);//ScrollBox->ClientRect); 
    bmp->Canvas->Lock(); 

    try 
    { 
        int Ofs=0; 
        if(GetWindowLong(ScrollBox->Handle, GWL_STYLE) & WS_BORDER ) 
            Ofs = -1;  // Don't draw form border 
        else 
            Ofs = 0;  // There is no border 

        ScrollBoxPaintTo(ScrollBox,bmp->Canvas->Handle,Ofs, Ofs, rc.right,rc.bottom); 
    // ScrollBox->PaintTo(bmp->Canvas->Handle, Ofs, Ofs); 

    } 
    __finally 
    { 
        bmp->Canvas->Unlock(); 
    } 

    return bmp; 

void __fastcall TForm3::Button5Click(TObject *Sender) 

    Graphics::TBitmap *bmp; 

    bmp=GetScrollBoxImage(ScrollBox1); 
// bmp->SaveToFile("C:\\TestScrollBoxImage.bmp"); 
    Image1->Picture->Bitmap->Assign(bmp); 
    Image1->AutoSize=true; 
    delete bmp; 

//---------------------------------------------------------------------------
     

 

 

추가   08-11-25

출처  http://www.delphi.co.kr/zboard/view.php?id=qanda&page=1&page_num=20&select_arrange=headnum&desc=&sn=off&ss=on&sc=on&keyword=&no=115191&category=

 

http://delphi.newswhat.com/geoxml/forumhistorythread?groupname=borland.public.delphi.graphics&messageid=40446566$1@newsgroups.borland.com

 

 

  
procedure Tform1.PaintControl( aControl: TWinControl; aCanvas: TCanvas; offsetx, offsety: Integer ); 
begin 
   SaveDC( aCanvas.handle );  
   try  
      SetWindowOrgEx( aCanvas.handle, - (acontrol.left + offsetx), - (acontrol.top + offsety), nil );  
      acontrol.perform( WM_PRINT, acanvas.handle, PRF_CHILDREN or PRF_CLIENT or PRF_NONCLIENT or PRF_ERASEBKGND );  
   finally  
      RestoreDC( aCanvas.handle, - 1 );  
   end;  
end;  


procedure Tform1.Button1Click(Sender: TObject);  
var  
 bmp: TBitmap;  
 i: integer;  
begin  

  bmp := TBitmap.Create;  
  try  
    bmp.width := scrollbox1.HorzScrollBar.Range;  
    bmp.height := scrollbox1.VertScrollBar.Range;  

    bmp.canvas.lock;  
    SetMapMode( bmp.canvas.handle, MM_ISOTROPIC );  
    SetWindowExtEx( bmp.canvas.handle, 400, 400, nil );  
    SetViewportExtEx( bmp.canvas.handle, 400, 400, nil );  
    try  
      SetWindowOrgEx( bmp.canvas.handle, - scrollbox1.HorzScrollBar.Position, - scrollbox1.VertScrollBar.POsition, nil );  
      bmp.Canvas.Brush := scrollbox1.Brush; 
      bmp.Canvas.FillRect(Rect(0,0,bmp.width,bmp.height)); 
      scrollbox1.perform( WM_PAINT, bmp.canvas.handle, 1 );  
      SetWindowOrgEx( bmp.canvas.handle, 0, 0, nil );  
      for i := 0 to scrollbox1.controlcount - 1 do  
         if scrollbox1.Controls[i] is TWincontrol then  
            Paintcontrol(TWincontrol(scrollbox1.Controls[i]), bmp.canvas, scrollbox1.horzscrollBar.Position, scrollbox1.vertScrollBar.Position ); 
    finally  
         bmp.canvas.unlock;  
    end;  

    bmp.SaveToFile('c:\test.bmp');  
  finally  
    bmp.free;  
  end;  

end; 
     

 

추가 08-12-02

위 델파이 버젼 코드를 다시 좀 수정 했습니다.

다른사람코드를 거의 그대로 복사해 넣다보니 쓸데없는 부분이 좀 있네요

다음은 수정한 코드입니다.

 

  
function GetScrollBoxImage(ScrollBox:TScrollBox):TBitmap; 
var 
  bmp: TBitmap; 
  i: integer; 
  wCtrl:TWinControl; 

  function iMax(iVal1,iVal2:Integer):Integer; 
  begin 
    if iVal1>iVal2 then Result:=iVal1 
    else Result:=iVal2; 
  end; 
begin 

  Result:=nil; 
  bmp := TBitmap.Create; 

  // bitmap을 Scroll-Range 크기만하게 만들어준다. 
  // Scroll-Range가 ScrollBox의 원래크기보다 작은경우가 잇으므로 Max값으로 한다. 
  bmp.width := iMax(ScrollBox.HorzScrollBar.Range,ScrollBox.Width); 
  bmp.height :=iMax(ScrollBox.VertScrollBar.Range,ScrollBox.Height); 

  bmp.canvas.lock; 

  //ScrollBox의 Brush를 이용해서 배경을 그려준다. 
  bmp.Canvas.Brush := ScrollBox.Brush; 
  bmp.Canvas.FillRect(Rect(0,0,bmp.width,bmp.height)); 

  //ScrollBox의 이미지 즉 ScrollBox와 그위에 올려진 GraphicControl의 그린다. 
  //그릴때 현재 ScrollBar의 위치만큼 DC의 Offset을 설정하고 그린다. 
  SetWindowOrgEx( bmp.canvas.handle, - ScrollBox.HorzScrollBar.Position, - ScrollBox.VertScrollBar.POsition, nil ); 
  ScrollBox.perform( WM_PAINT, bmp.canvas.handle, 0 ); 

  //ScrollBox위에 모든 Window-Control을 그려준다. 
  for i := 0 to ScrollBox.controlcount - 1 do 
  begin 
     if ScrollBox.Controls[i] is TWincontrol then 
     begin 
      wCtrl:=TWinControl(ScrollBox.Controls[i]); 
      SaveDC( bmp.Canvas.Handle ); 
      SetWindowOrgEx( bmp.Canvas.Handle, - (wCtrl.Left + ScrollBox.horzscrollBar.Position), - (wCtrl.Top +  ScrollBox.vertScrollBar.Position), nil );
      wCtrl.Perform(WM_PAINT,bmp.Canvas.Handle,0); 
      RestoreDC(bmp.Canvas.Handle,-1 ); 
     end; 
  end; 

  bmp.canvas.Unlock; 
  Result:=Bmp; 
end; 

//사용예 
procedure TForm1.Button2Click(Sender: TObject); 
var 
  bmp:TBitmap; 
begin 
  bmp:=GetScrollBoxImage(ScrollBox1); 
  Image2.Picture.Bitmap.Assign(bmp); 
  Image2.AutoSize:=true; 
  bmp.free; 
end;
     

 



[출처]

http://cafe.naver.com/bcbmaster.cafe?iframe_url=/ArticleRead.nhn%3Farticleid=759

저작자 표시
신고

'Programming > C++' 카테고리의 다른 글

[볼랜드C++] ScrollBox 이미지 캡쳐(안보이는 영역까지)  (0) 2010.12.08
posted by By훈트 2010.12.01 14:11
DateTime oldDate = new DateTime(2002,7,15);
DateTime newDate = DateTime.Now;

// Difference in days, hours, and minutes.
TimeSpan ts = newDate - oldDate;
// Difference in days.
int differenceInDays = ts.Days;

Console.WriteLine("Difference in days: {0} ", differenceInDays);
저작자 표시
신고
posted by By훈트 2010.11.19 09:13

기다리던 겨울이 오고있어요 ㅋ
요즘 주말엔 보드타러 다니고 평일에 가끔 샵투어 다니며
나름 바쁘게 지내고 있었는데 어느덧 방문자수가 ~

아웅 쪼금만 더 추워졌음 좋겠다~~

저작자 표시
신고

'Daily > 훈트의일상' 카테고리의 다른 글

나이키 신발 사이즈  (0) 2011.03.11
Dr.Dre 헤드폰  (0) 2010.12.28
와우 방문자 1만찍었...ㄷㄷㄷ  (0) 2010.11.19
토탈 5000 뿌 ㅎㅎㅎ  (0) 2010.10.02
Total 1004 기념~~  (0) 2010.08.18
정보처리산업기사 실기 합격  (0) 2010.08.13
posted by By훈트 2010.11.18 09:50

준비물 : 흰 우유 1 L , 불가리스 요구르트(씨리얼 맛) 1병 ,

            올리고당 7큰술 , 적당한 용기

 

 

첫번째,

 

흰우유와 요구르트를 용기에 넣고 잘 섞은후 전자레인지에 5분정도 돌린다 후 실온에서 15시간 발효시킨다.

 

두번째,

 

15시간발효후 올리고당 7큰술을 넣고 잘섞은후 12시간 냉장 보관한다.

 

세번째,

 

잘저어서 그릇에 덜어 맛있게 먹는다.

각종 쨈과 섞어먹으면 맛있더라~!!

저작자 표시
신고

'요리 > 레시피노트' 카테고리의 다른 글

[디저트] 요거트 만들기  (0) 2010.11.18
posted by By훈트 2010.11.16 10:30

C#에서 윈도우즈의 해상도를 가져오는 방법은 다음과 같다.

1. 

Screen.PrimaryScreen.Bounds.Width
Screen.PrimaryScreen.Bounds.Height

 

2.

System.Windows.Forms.SystemInformation.VirtualScreen.Width;

System.Windows.Forms.SystemInformation.VirtualScreen.Height;


이를 이용해 폼을 윈도우즈의 정중앙에 띄울수 도 있다.

 

this.Location = new Point(

   Screen.PrimaryScreen.Bounds.Width/2 - this.Size.Width/2,

   Screen.PrimaryScreen.Bounds.Height/2 - this.Size.Height/2

); 

 
1, 2 의 차이점은 듀얼모니터를 쓸경우 1은 모니터 1대의 해상도를 가져오고 2는 2대를 합한 총 해상도를 가져옵니다.


저작자 표시
신고