رسم گرافیکی در حالت کنسول

pb559blue

Active Member
سلام،
من میخوام در ConsolApp از گرافیک استفاده کنم یعنی تو ConsolApp بتونم مربع و دایره و خط این جور چیزا بکشم همونطور که تو
پاسکال میشه و همتونم بلدید. اما هیچی نمیدونم میشه یه منبع برای یاد گیری این موضوع به من معرفی کنید یا یه توضیحی بدید
البته اگه Ebook ی میشناسید و معرفی کنید بهتره.

ممنون.
 

pb559blue

Active Member
خیلی ممنون از راهنمایی تون !
لااقل اگه پرسشم اشتباه بگید یا تصحیح ش کنید تا من از جهلی که بهش دچارم بیام بیرون. :neutral: (نمیدونم والا شاید شما هنوز وقتش رو پیدا نکردین)
 
آخرین ویرایش:

saalek110

Well-Known Member
سلام. من پست شما را خواندم ولی نفهمیدم در چه زبانی می خواهید.
اگر سی است که توابع گرافیکی در مود گرافیکی هست.
اگر دات نتی مثل سی شارپ منظورتونه من ندیدم تا حالا در کنسول شکل بکشند ولی اگر این زبان منظوره بگید من سرچ کنم. البته روی فرم بلدم شکل بکشم و خیلی هم کار کردم ولی شما گفتید کنسولی.
بی زحمت بیشتر توضیح بدهید.
 

pb559blue

Active Member
آقا saalek زودتر میومدی دیگه داشتم دیوانه میشدم میخواستم برم معتاد شم ... دستت درد نکه درسته اشتباه تو پرسش من بود. :D
از اول بگید اینو تا منم بگم دیگه، چون من اصلا C# تو ذهنم نبود و گفتم اینجا مال C و C++ دیگه ... !
اینو زود تر میگفتید تا منم این پرسش و درست کنم (از دست این در دسترس نبودن ذهنو اینجور چیزا ... :cool:)
تو C++ ، راستش این استاد ما تو دانشگاه یه پروژه داده که باید تو Consol باشه و گرافیک هم نیاز داره اما منبعی معرفی نکرده منم
هر چی گشتم فقط فهمیدم باید <graphics.h> رو include کنم و تازه این یارو (منظورم graphics.h هست) تو VisualStudio وجود
نداره و واسه کامپایلر های دیگس ... :cry: اما نتونستم توابعی روکه داره و نهوه کار با توابعش رو پیدا کنم.
البته ببخشید اگه خیلی مبتدیانه صحبت میکنما ...
 
آخرین ویرایش:

saalek110

Well-Known Member
سلام. من در ویژوال سی 6 در کنسول گرافیک تابحال کار نکردم ولی فکر کنم بشه راش انداخت. ولی در tubro c 3 در اینجا کار کردم و ساده است.
ببین کدام را می خواهی. دومی که مشکل نداره . اولی هم شاید بتوانم اشکالات جزئی را برطرف کنم.
 

pb559blue

Active Member
خیلی ممنون ولی من یه جاهایی از اولی رومتوجه نشدم (من تازه کارم 2 ماه با C++ آشنا شدم اینم واسه پروژه آخر ترم
میخوام) اگه بتونی یه منبع کامل تر واسه ما مبتی ها معرفی کنی یا عالی میشه)
 

saalek110

Well-Known Member
سلام. برنامه ای که در پست بعدی پست می زنم دقیقا جواب شماست.
اگر در شرح آن مشکل دارید می توانم کمی کمکتان کنم.

اگر هم قصد یادگیری ویژوال سی 6 وسط ترم دارید من توصیه نمی کنم چون وقت گیر است ولی اگر خواستید باز هم حاضرم تا حد توانایی ام کمک کنم.
این هم اولین منبع:
http://cnx.org/content/m14425/latest/
البته باز هم منبع هست که با سرچ می توانید پیدا کنید. من هم دیدم لینک می دهم.
 
آخرین ویرایش:

saalek110

Well-Known Member
منبع:
http://www.daniweb.com/code/snippet173.html
----------------------------------------------------------
رسم اشکال در یک پروژه کنسولی در ویژوال سی 6

ویژوال سی را باز کنید و یک پروژه کنسولی خالی بسازید . بعد یک فایل سی پلاس از منوی پروجکت (ادد تو پروجکت - و بعد نیو) به پروژه اضافه کنید.
بعد کد زیر را به فایل بیافزایید و برنامه را اجرا کنید.
کد:
// draw two lines and a circle on your console screen
// original BCX basic code by Sir Joe Caverly
// translated to C code and modified to work with Dev-C++
// link with GDI32.lib or with Dev-C++ link libgdi32.a via
// Project>>Project Options>>Parameters>>Add Lib>>libgdi32.a
// this is a Windows Console Application
 
 
#include <windows.h>    // Win32API Header File
#include <cstring>
#include <cstdio>
 
//using namespace std;
 
#define Red  RGB (255,0,0)
#define Lime RGB (206,255,0)
#define Blue RGB (0,0,255)
 
static HWND    hConWnd;
 
int     BCX_Line (HWND,int,int,int,int,int=0,HDC=0);
int     BCX_Circle (HWND,int,int,int,int=0,int=0,HDC=0);
 
HWND    GetConsoleWndHandle (void);
 
int main()
{
  hConWnd = GetConsoleWndHandle();
  if (hConWnd)
  {
    // be creative here, draw your own circles or lines
 
    //   hwin, centerX, centerY, radius, pencolor 
    BCX_Circle(hConWnd, 150, 130, 105, Blue);
    //   hwin, ulcX, ulcY, lrcX, lrcY, pencolor 
    BCX_Line(hConWnd, 5, 5, 300, 250, Red);
    BCX_Line(hConWnd, 295, 5, 5, 250, Lime);
    
    getchar();  // wait
  }
  return 0; 
}
 
 
int BCX_Line (HWND Wnd,int x1,int y1,int x2,int y2,int Pen,HDC DrawHDC)
{
  int a,b=0;
  HPEN hOPen;
  // penstyle, width, color
  HPEN hNPen = CreatePen(PS_SOLID, 2, Pen);
  if (!DrawHDC) DrawHDC = GetDC(Wnd), b = 1;
  hOPen = (HPEN)SelectObject(DrawHDC, hNPen);
  // starting point of line
  MoveToEx(DrawHDC, x1, y1, NULL);
  // ending point of line
  a = LineTo(DrawHDC, x2, y2);
  DeleteObject(SelectObject(DrawHDC, hOPen));
  if (b) ReleaseDC(Wnd, DrawHDC);
  return a;
}
 
 
// converts circle(centerX,centerY,radius,pen) to WinApi function
// ellipse inside box with upper left and lower right coordinates
int BCX_Circle(HWND Wnd,int X,int Y,int R,int Pen,int Fill,HDC DrawHDC)
{
  int a, b = 0;
  if (!DrawHDC) DrawHDC = GetDC(Wnd), b = 1;
  // penstyle, width, color
  HPEN   hNPen = CreatePen(PS_SOLID, 2, Pen);
  HPEN   hOPen = (HPEN)SelectObject(DrawHDC, hNPen);
  HBRUSH hOldBrush;
  HBRUSH hNewBrush;
  // if true will fill circle with pencolor
  if (Fill)
  {
    hNewBrush = CreateSolidBrush(Pen);
    hOldBrush = (HBRUSH)SelectObject(DrawHDC, hNewBrush);
  }
  else
  {
    hNewBrush = (HBRUSH)GetStockObject(NULL_BRUSH);
    hOldBrush = (HBRUSH)SelectObject(DrawHDC, hNewBrush);
  }
  a = Ellipse(DrawHDC, X-R, Y+R, X+R, Y-R);
  DeleteObject(SelectObject(DrawHDC, hOPen));
  DeleteObject(SelectObject(DrawHDC, hOldBrush));
  if (b) ReleaseDC(Wnd, DrawHDC);
  return a;
}
 
 
// the hoop ...
HWND GetConsoleWndHandle(void)
{
  HWND hConWnd;
  OSVERSIONINFO os;
  char szTempTitle[64], szClassName[128], szOriginalTitle[1024];
 
  os.dwOSVersionInfoSize = sizeof( OSVERSIONINFO );
  GetVersionEx( &os );
  // may not work on WIN9x
  if ( os.dwPlatformId == VER_PLATFORM_WIN32s ) return 0;
 
  GetConsoleTitle( szOriginalTitle, sizeof( szOriginalTitle ) );
  sprintf( szTempTitle,"%u - %u", GetTickCount(), GetCurrentProcessId() );
  SetConsoleTitle( szTempTitle );
  Sleep( 40 );
  // handle for NT
  hConWnd = FindWindow( NULL, szTempTitle );
  SetConsoleTitle( szOriginalTitle );
 
  // may not work on WIN9x
  if ( os.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS )
  {
    hConWnd = GetWindow( hConWnd, GW_CHILD );
    if ( hConWnd == NULL )  return 0;
    GetClassName( hConWnd, szClassName, sizeof ( szClassName ) );
    while ( strcmp( szClassName, "ttyGrab" ) != 0 )
    {
      hConWnd = GetNextWindow( hConWnd, GW_HWNDNEXT );
      if ( hConWnd == NULL )  return 0;
      GetClassName( hConWnd, szClassName, sizeof( szClassName ) );
    }
  }
  return hConWnd;
}

d2.gif

 

جدیدترین ارسال ها

بالا