Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 12.08.2011, 04:16   #1 (permalink)
DJeka
Member
 
Регистрация: 11.07.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Unhappy Вытекание воды из сосуда

Доброй ночи!Помогите пожалуйста разобраться с анимацией, сидели с другом думали, как сделать, так и не вышло, не получется, что бы при вытекании воды через отверстия, струя исчезала в зависимости от глубины, помогите пожалуйста, заранее спасибо
DJeka вне форума   Ответить с цитированием

Старый 12.08.2011, 04:16
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Скорее всего проблема уже была решена ранее в других обсуждениях

Капля воды
Реально протащить 4-6км пластиковой трубы под землей для подачи воды?

Старый 12.08.2011, 04:19   #2 (permalink)
DJeka
Member
 
Регистрация: 11.07.2011
Сообщений: 49
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Вот код проги:
/*Программа 5-2. Вывод текста и простых геометрических фигур*/
/*Оператора препроцессора*/
#include <windows.h>
#include <math.h>
#include <windowsx.h>
#define ID_BUTTON1 12


int n=5;
int sis=1;
int d=0;




/*Прототипы используемых в программе функция пользователя*/
BOOL OnCreate(HWND,LPCREATESTRUCT);
void OnPaint(HWND);
void OnDestroy(HWND);
void OnCommand(HWND hwnd,int,HWND,UINT);

LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
/*Глобальные переменные, доступные всем функциям*/
HPEN hRedPen,hGreenPen,hBluePen;//Дескрипторы новых перьев
HBRUSH hRedBrush,hGreenBrush, hBlueBrush,hGreenBrush1,pBrush;//и новых кистей
/*Главная функция WinMain*/
int WINAPI WinMain(HINSTANCE hInst,HINSTANCE,LPSTR,int){
char szClassName[]="MainWindow";
char szTitle[]="Программа 5-2";
MSG msg;
WNDCLASS wc;
/*Зарегистрируем класс главного окна*/
ZeroMemory(&wc,sizeof(wc));
wc.lpfnWndProc=WndProc;
wc.hInstance=hInst ;
wc.hIcon=LoadIcon(NULL,IDI_APPLICATION) ;
wc.hCursor=LoadCursor(NULL,IDC_ARROW);
wc.hbrBackground=CreateSolidBrush(RGB(200, 200,100));// Окно бледно-желтое
wc.lpszClassName=szClassName;
RegisterClass (&wc) ;
/*Создадим главное окно и сделаем его видимым*/
HWND hwnd=CreateWindow(szClassName,szTitle,
WS_OVERLAPPEDWINDOW,50,50,900, 900,
HWND_DESKTOP, NULL, hInst, NULL) ;


//HWND hbutton;
//hbutton= CreateWindow("button","Рисуй,пидор!", WS_CHILD | WS_VISIBLE | BS_DEFPUSHBUTTON, 605, 500, 120, 30, hwnd,(HMENU)ID_BUTTON1, hInst,NULL);


ShowWindow(hwnd,SW_SHOWNORMAL);


/*Организуем цикл обнаружения сообщений*/
while(GetMessage(&msg,NULL,0,0))
DispatchMessage(&msg) ;
return 0;
}
/*0конная функция WndProc главного окна*/
LRESULT CALLBACK WndProc(HWND hwnd,UINT msg,
WPARAM wParam,LPARAM lParam){
switch(msg) {
HANDLE_MSG(hwnd,WM_CREATE,OnCreate);
HANDLE_MSG(hwnd,WM_PAINT,OnPaint);
HANDLE_MSG(hwnd,WM_DESTROY,OnDestroy);
HANDLE_MSG(hwnd,WM_COMMAND,OnCommand);
default:
return(DefWindowProc(hwnd,msg,wParam,lParam));
}
}
/*Функия OnCreate обработки сообщений mt_CREATE*/
BOOL OnCreate(HWND hwnd,LPCREATESTRUCT){


/*Создадим новые перья*/
hRedPen=CreatePen(PS_SOLID,2,RGB(150,0, 0)) ;

hGreenPen=CreatePen(PS_SOLID, 5, RGB (0,150, 0) );
hBluePen=CreatePen(PS_SOLID,1,RGB(200, 200,100)) ;
hGreenBrush1=CreateSolidBrush (RGB (0,150, 0) );
//HPEN CreatePen(int fnPenStyle,int nWidth, COLORREF clrref);
/*Создадям новые кисти*/
hRedBrush=CreateSolidBrush(RGB(200, 200,100 ));
hGreenBrush=CreateSolidBrush(RGB(120,255,120) ) ;
hBlueBrush=CreateSolidBrush(RGB(0,255, 255) ) ;
return TRUE;
}
/*функия OnPaint обработки сообщений WHPAINT*/

void OnCommand(HWND hwnd,int id,HWND,UINT){


switch(id){

case ID_BUTTON1:
sis=1;
// z++;


InvalidateRect(hwnd,NULL,TRUE);
break;
}}

void OnPaint(HWND hwnd){
PAINTSTRUCT ps;//Структура для функции BeginPaint О

HDC hdc=BeginPaint(hwnd,&ps); //Получим контекст устройства
SetBkMode (hdc,TRANSPARENT); //Прозрачный фон под текстом







MoveToEx(hdc,300,10,NULL);//правая линейка
LineTo(hdc,320,5);
MoveToEx(hdc,100,10,NULL);//правая линейка
LineTo(hdc,80,5);
MoveToEx(hdc,300,10,NULL);//правая линейка
LineTo(hdc,300,420);
MoveToEx(hdc,100,10,NULL);//левая
LineTo(hdc,100,420);
MoveToEx(hdc,100,420,NULL);//дно
LineTo(hdc,300,420);




Rectangle(hdc,120,420,150,620);
Rectangle(hdc,250,420,280,620);
Rectangle(hdc,120,420,280,450);

//InvalidateRect(hwnd,NULL,TRUE);

SelectPen(hdc,hBluePen);
SelectBrush(hdc, hBlueBrush);
Rectangle(hdc,102,50,300,420); //green kvadro

//InvalidateRect(hwnd,NULL,TRUE);


SelectPen(hdc,hGreenPen);
MoveToEx(hdc,10,622,NULL);//дно
LineTo(hdc,900,622);


int k;




float U;
int i;
int Y; Y=0;
float t; t=0;
int g; g=10;
//int s;
k=400/5;
int m;

int z;
z=0;
for( i=1;i<=n;i++){Sleep(10);
SelectBrush(hdc, hBlueBrush); //( i=z;n<=i;i--)
SelectPen(hdc,hRedPen);
Ellipse(hdc,294,i*k-8,306,i*k+8);}



if(sis==1)
for( i=0;i<=n;i++)
{ Sleep(2);
z++;




for( i=z+1;i<=n;i++){
for(int X=300; X<1000; X=X+4){
SelectPen(hdc,hBluePen);
U=sqrt((g*i*k)/2);
t=(X-300)/U;

Y=((g*t*t)/2)+i*k;
//if(Y<=620)
Ellipse(hdc,X-2+10,Y-2,X+2+10,Y+2);
}}}




if(sis==1){ for(Y=30;Y<400;Y++)

{Sleep(50);
SelectBrush(hdc, hRedBrush);
SelectPen(hdc,hBluePen);
Rectangle(hdc,102,30,300,Y);}}




EndPaint (hwnd, &ps);
}


/*функцяя OnDestroy обработки сообщения WM_DESTROY*/
void OnDestroy(HWND){
PostQuitMessage(0);//Завершим программу
}
DJeka вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 12:37.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.