TIN HỌC ỨNG DỤNG 2 - K11
Bạn hãy đăng ký làm thành viên để có thể xem các thông tin trong lớp và viết bài trong diễn đàn.

Không những thế, sau khi đăng ký bạn sẽ nhận được sự hỗ trợ của diễn đàn nhiều hơn.
Change background image
TIN HỌC ỨNG DỤNG 2 - K11

Khoa CNTT - ĐH Công nghiệp Hà Nội


Go downMessage [Page 1 of 1]

© FMvi.vn

on 24/5/2011, 13:26

Admin

Code đồ họa Trẻn Visua basic, anh em nào hiểu giải thích hộ cái, cần thiết thì viết 1 đoạn trên visua studio c# cho anh em tham khảo

Code:

#define MAXSIZE 100
typedef struct tagSTACK {
   int top;
   POINT a[MAXSIZE];
} STACK;

bool IsFull(STACK stack)
{
   if (stack.top == MAXSIZE)
      return true;
   else
      return false;
}

bool IsEmpty(STACK stack)
{
   if (stack.top == 0)
      return true;
   else
      return false;
}

void Push(STACK &stack, POINT p)
{
   stack.a[stack.top] = p;

   stack.top++;
   return;
}

POINT Pop(STACK &stack)
{
   stack.top--;
   return stack.a[stack.top];
}

int LoangPhai(HDC hdc, int x, int y, COLORREF BC)
{
   while (true) {
      if (GetPixel(hdc,x+1,y) == BC)
         return x;
      x++;
   }
}
int ToTrai(HDC hdc, int x, int y, COLORREF FC, COLORREF BC)
{
   while (true) {
      SetPixel(hdc,x,y,FC);
      if (GetPixel(hdc,x-1,y)==FC || GetPixel(hdc,x-1,y)==BC)
         return x;
      x--;
   }
}

void TimCacXBenPhaiNhat(HDC hdc, STACK &stack, int x, int y, int xmin, COLORREF FC, COLORREF BC)
{
   int m;
   m = x;
   POINT p;

   // Ben phai
   while (GetPixel(hdc,x,y) != BC && GetPixel(hdc,x,y) != FC) {
      if (GetPixel(hdc,x+1,y) == BC || GetPixel(hdc,x+1,y) == FC) {
         p.x = x;
         p.y = y;
         Push(stack,p);
         break;
      }
      x++;
   }
   // Ben trai
   m = x;
   while (m > xmin) {
      if (GetPixel(hdc,m,y) == FC || GetPixel(hdc,m,y) == BC)
         if (GetPixel(hdc,m-1,y) != FC && GetPixel(hdc,m-1,y) != BC)
            if (!IsFull(stack)) {
               p.x = m-1;
               p.y = y;
               Push(stack,p);
            }

      m--;
   }
   return;
}

void ToMauKhongDeQui(HWND hWnd)
{
   HDC hdc;
   hdc = GetDC(hWnd);
   COLORREF FC = RGB(255,0,0);
   COLORREF BC = RGB(0,0,255);
   
   STACK stack;
   stack.top = 0;
   POINT p;

   int x = 366, y = 210;
   int xmax, xmin;

   xmax = LoangPhai(hdc,x,y,BC);
   if (!IsFull(stack)) {
      p.x = xmax;
      p.y = y;
      Push(stack,p);
   }

   while (!IsEmpty(stack)) {
      p = Pop(stack);
      xmin = ToTrai(hdc,p.x,p.y,FC,BC);
      // Di len
      TimCacXBenPhaiNhat(hdc,stack,p.x,p.y-1,xmin,FC,BC);
      // Di xuong
      TimCacXBenPhaiNhat(hdc,stack,p.x,p.y+1,xmin,FC,BC);
   }
   ReleaseDC(hWnd,hdc);
   return;
}


Ký tên:
Gemini Photo là nơi cung cấp gói dịch vụ chụp ảnh thời trang, chụp ảnh giá rẻ, chụp ảnh ngoài trời, chụp ảnh cưới,chụp ảnh bé yêu ... dành cho cộng đồng đặc biệt là giới trẻ

Add: 37/144 Ngô Gia Tự - Long Biên - Hà Nội
SĐT: 0166 623 5623
Map: tinyurl.com/map-geminiphoto
Báo giá: tinyurl.com/geminiphoto-baogia

Các bạn có thể coi thêm tại đây:
facebook.com/GeminiPhotoStudio
View user profile http://my.opera.com/anhlavip12a4/blog/

Thích

Báo xấu [0]

Gửi một bình luận lên tường nhà MinhTuan
Trả lời nhanh

Back to topMessage [Page 1 of 1]

  © FMvi.vn

« Xem bài trước | Xem bài kế tiếp »

Bài viết liên quan

    Quyền hạn của bạn:

    You cannot reply to topics in this forum