본문 바로가기

bitmap

[XNA , Texture2D] Texture2D from Bitmap (fast copy) 종전의 방식 (http://scripter.egloos.com/2548511) 으로는 너무 느려 실시간으로 이미지를 갱신하는데에 무리가 있었다. 그래서 아에 Stream 으로 복사하는 방법을 찾았고 Aforge 의 영상을 붙이는데 성공했다. 이전의 http://www.codeproject.com/KB/game/VidTextureClassWebcamApp.aspx?msg=2630927 보다 화질은 좋아졌다.(쨍 .. 하다..) 간혹 보이는 계단현상이 없어졌다. 속도는 .. 처음엔 조금 딜레이가 생기다가 곧 VideoTexture 만큼 복귀 되었으나 약간 속도가 불안정하긴 했다. 하지만 VideoTexture 에서 런타임중 간헐적으로 나오는 오퍼레이터 에러는 없어 덜컥? 거리는 현상이 없다. 그리고 Vide.. 더보기
[Draw Line Algorithm] 1. 기본(1) [Draw Line Algorithm] 1. 기본(1) XNA 에 별다른 비트맵 API가 없다는것을 알고 , 한번 픽셀을 다루기로 했다. 우선 브레슨햄 알고리즘 에 들어가기 전에 일반적인 선을 그리는 알고리즘을 살펴 보아야 하겠다. 먼저 우리가 비트맵에 선을 긋기 위해서는 일반적으로 두점을 필요로 한다. (물론 한점과 기울기를 이용할수도 있겠지만 특별한 경우가 아니라면 정확한 포인팅이 가능한 두점을 이용한다) 우선 고등학교 기초 수학에 보면 두점을 알때 직선 방정식은 .. (공통수학의 정석 p554) p0(x0 , y0) 와 p1(x1,y1) 을 알때 직선의 방정식은 Y - y0 = ( y1 - y0 / x1 - x0 ) * ( X - x0) (단 , x1 != x0) 이러하다. 기본적인 Y = m*X .. 더보기
[bitmapData Capture] stage capture 시 유의점 상황은 트위너로 5개의 cicle을 랜덤하게 트위닝 하고, 그것을 엔터프레임으로 비트맵 데이터로 캡춰를 하는 상황이다. 그리고 엔터프레임 안에는 기본적으로 아래와 같이 작성을 한다. //in EnterFrame capture = new BitmapData(stage.stageWidth, stage.stageHeight , false ,0xd0d0d0) capture.draw(stage) // 그럼 결과는 하지만 이것은 원하는결과가 아니다. 잔상이 없는 결과를 원하면 스테이지에 바로 addChild하지말고 컨테이너를 하나 만든다음 해줘야 한다. //in EnterFrame capture = new BitmapData(stage.stageWidth, stage.stageHeight , false ,0xd0d.. 더보기
[XNA , Texture2D] Texture2D from Bitmap (very Simple) Content.Load 로 불러올수 있는것은 *.xnb밖에 없다. 동적으로 캡춰되거나 연산된 비트맵을 받아오기가 영 까다롭다. 그래서 매우 간단한 비트맵 복사 방법을 생각했다. Created with colorer-take5 library. Type 'csharp' private Texture2D tx; protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); //비트맵을 만든다. Bitmap b = new Bitmap(@"c:\a.jpg"); //xna �� 컬러배열을 타겟 비트맵 크기만큼 생성한다. xColor[] pixels = new xColor[b.Width * b.Height]; //x , y 루.. 더보기
[C# XNA][texture2D.Setdata] XNA에서 픽셀을 하나하나 다루어 보자. xna의 API 가 익숙하지 않았던때, 픽셀을 다루기 위해 C#의 기본 GDI를 이용해여 마샬링 하여 텍스쳐에 붙였다. 그런데,. 반전이.. zune hd 에서 사용할수 있는 네임스페이스가 극히 제한적이라.. Bitmap은 가져 오지 못한다. 그래서 텍스쳐하나당 한픽셀을 그려야 된다고 생각하자 말도안되는 리소스 낭비이다. 텍스쳐2D 와 Draw메소드를 엄청나게 사용해야되서, 도저히 용납할수 없는 코딩이 될것이다. 고민끝에, ,.XNA짱인,. 곰동님에게 긴급 질문했다. 그리고 친절히 답해 주셨다. ( http://blog.naver.com/fly33499 ) 위의 그림처럼 하나의 Texture2D에 여러개의 setData를 이용해 픽셀들을 다룰수 있다. 드디어 2D 비트맵을 다룰수 있게 되었다 마치 bit.. 더보기