Вверх ↑
Этот топик читают: Гость
Ответов: 9906
Рейтинг: 351
#76: 2008-01-26 16:57:27 ЛС | профиль | цитата
nesco писал(а):
Молча, не работает и все, а значит может еще у кого-то работать не будет

Это вывод сделанный из НЕ ЗНАНИЯ.
Профессионалы делают выводы из знания.
Первое предупреждение о неполном профессиональном соответствии

nesco писал(а):
И на кой черт это нужно, когда

Не умеешь - не берись, у других время занимать меньше будешь
Только за одну такую фразу с работы выгоняют, вообще-то...
Второе предупреждение о неполном профессиональном соответствии

nesco писал(а):
Точно так же, как иногда меня твои
Ответил уже: учи матчасть. Хотя бы перед такими ответами
nesco писал(а):
Тобой не внимательно прочитан вот этот вопрос
Мной внимательно прочитан вопрос
nesco писал(а):
на что дан конкретный ответ
Конкретный ответ, это - схема.

nesco писал(а):
Ну да, а ввести дополнительное свойство в компонент для пакетной обработки никто не дает, проще, наверное, прицепить к схеме кучу элементов для ожидания завершения обработки

Именно ДА.
Не понимаешь - занимайся другой работой.
Примеры введения дополнительных св-в в твоем творчестве предостаточно.
Каждое св-во, в твоем исполнении - лишний код (свидетельство работы руками, а не головой).
Или я ошибаюсь, и у тебя это не так
Кто-то же должен защищать пользователя, которому интересно отчего это у него появились "лишние 5К", когда они ему не нужны -- от твоего творчества
Потому-что твой ответ: "за дополнительные возможности НАДО платить" - просто вранье.


nesco писал(а):
Я следую вот этому принципу, и буду следовать ему всегда

Пожалуйста, следуй: сделай кодогенерацию, которая позволяет не добавлять коды с введением новых св-в и правых точек
Припоминается мне, что ты попросту умыл руки

Второе, ты разобрался, как ждать правильней: ProcessMessages или ProcessPendingMessages ???
Ты разобрался что будет при получении WM_QUIT при ожидании ???
Ты думаешь, что событие Application.onTerminate появилось просто так, "на всякий случай" ???

Если нет, какого черта ты суешь то, чего не понимаешь
Третье предупреждение о неполном профессиональном соответствии



А впрочем - ну тебя в пень дырявый. Программируешь "методом тыка" - на здоровье.
БЕЗ МЕНЯ


карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#77: 2008-01-26 17:50:15 ЛС | профиль | цитата
Galkov писал(а):
А впрочем - ну тебя в пень дырявый. Программируешь "методом тыка" - на здоровье.
БЕЗ МЕНЯ
Ну чего ты сразу в бутыль полез.

Но вот это -- Именно ДА, у нас соверщенно код не тянет, или я ошибаюсь?

Galkov писал(а):
Профессионалы делают выводы из знания
Я же тебя уже спрашивал -- почему? Отлично ты мне ответил -- ищи у себя багу. Какая к черту бага, когда указатели совпадают и в том и друом случае, но в одном случае у меня это работает, а в другом нет. Возможно проблема совсем не в кодах, а в системе, в конце концов мы используем чужой объект, откуда нам знать как он отрисует на нашем контексте?

Galkov писал(а):
Не умеешь - не берись, у других время занимать меньше будешь
Зачем так категорично заявлять. Я читал твои старые посты, они не сильно отличаются от моих сейчас -- хорощо, когда поднялся на уровень выше, но ведь когда-то сам такой был.
И вот так тебе никто не писал

Galkov писал(а):
предупреждение о неполном профессиональном соответствии

а ведь можно было тогда написать, но ведь никто не написал же.

Galkov писал(а):
отчего это у него появились "лишние 5К"
Этот же пользователь завтра спросит -- а почему схема обработки ожидания в компонет не вставлена отдельным свойством и надо делать кучу обвязки для этого. Ну а ему красиво ответят -- 0.5К сэкономили. Смешно, ну просто смешно.

Беспредметный какой-то разговор получился...

------------ Дoбавленo:


Я удалил компонент с SVN. И я не хочу болше вести никаких разработок

Все, я подаю заявление "по-собственному желанию", а то мне и так уже предложили:

Galkov писал(а):
Не умеешь - не берись, у других время занимать меньше будешь
Только за одну такую фразу с работы выгоняют, вообще-то...

карма: 22

0
Ответов: 9906
Рейтинг: 351
#78: 2008-01-26 17:58:05 ЛС | профиль | цитата
nesco писал(а):
Я читал твои старые посты, они не сильно отличаются от моих сейчас

Сильно.
Никогда я не нарушал базовых принципов, которые излагал неоднократно, и познание которых не требует верхних знаний.
Например, не делал выводов из НЕ ЗНАНИЯ
Читать учись. Именно с большой буквы.

nesco писал(а):
и надо делать кучу обвязки для этого

Доказательства.
Про "кучи обвязки" слышать приходилось (тот же Tad, со своим AutoSize в левую сторону). Правда, кончалось это обычно 1-2-мя элементами.
"Надо делать" - называется программированием, между прочим.
И меня лично, слабо волнуют те пользователи, для кого "надо делать" - огромная проблема.
Это тоже база, понимание цели своей работы: сделать программки на все случаи жизни, или инструмент Программирования.
И это я тоже обсуждать не намерен, не надо сыпать в меня цитатами.

nesco писал(а):
Ну а ему красиво ответят -- 0.5К сэкономили. Смешно, ну просто смешно.

Сходи на сайт к Кладову и послушай, что он отвечает на предложения добавить байт эдак 20 кода.
Потому-что их отсутствие кому-то смешно (или в лом 3 строки кода в своей проге написать)
Разница между KOL и VCL - тоже смешная, но получена ИМЕННО таким же способом

Перестанет быть смешно - можно будет продолжить разговор

карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#79: 2008-01-27 00:24:32 ЛС | профиль | цитата
Galkov писал(а):
Перестанет быть смешно - можно будет продолжить разговор

Уже не смешно.

Я исправил коды, посмотри на SVN.

Я подставил ImageLoader в твой пример, но без нижних манипуляций с контролем флага, нифига не получается отрисовать -- onBeforeDraw срабатывает раньше, чем загружается картинка, приходится ждать конца зарузки.
Без примера здесь никто отрисовать не сможет, надо что-то с этим сделать, какие будут конструктивные предложения

Вот твой пример, но с компонентом



Add(MainForm,7649955,210,315)
{
Left=10
Top=10
Ctl3D=0
Position=1
Point(onPaint)
link(onCreate,12423105:doData,[])
}
Add(InlineCode,13555273,406,427)
{
WorkPoints=#6:doLoad|6:doDraw|
EventPoints=#6:onLoad|
DataPoints=#8:FileName|6:Bitmap|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|56:uses Windows,Messages,Share,Debug,ActiveX,KOLComObj,KOL;|0:|4:type|32: IImgCtx = interface(IUnknown)|48: ['{3050f3d7-98b5-11cf-bb82-00aa00bdce0b}']|40: // Initialization/Download methods|68: function Load(pszUrl:PWChar; dwFlags:DWORD): HResult; stdcall;|93: function SelectChanges(ulChgOn:DWORD; ulChgOff:DWORD; fSignal:DWORD): HResult; stdcall;|83: function SetCallback(pCallback:pointer; pUserData:pointer): HResult; stdcall;|44: function Disconnect: HResult; stdcall;|0:|22: // Query methods|95: function GetUpdateRects(prc:PRect; var prcImg:TRect; var pcrc:integer): HResult; stdcall;|104: function GetStateInfo(var pulState:DWORD; var pSize:TSize; fClearChanges:DWORD): HResult; stdcall;|64: function GetPalette(var phpal:HPalette): HResult; stdcall;|0:|26: // Rendering methods|69: function Draw(_hdc:HDC; var prcBounds:TRect): HResult; stdcall;|107: function Tile(_hdc:HDC; var pptBackOrg:TPoint; var prcClip:TRect; var psize:TSize): HResult; stdcall;|120: function StretchBlt(_hdc:HDC; dstX,dstY,dstXE,dstYE,srcX,srcY,srcXE,srcYE:integer; dwROP:DWORD): HResult; stdcall;|5: end;|0:|28: THiAsmClass = class(TDebug)|10: private|21: FImgCtx:IImgCtx;|17: hOK:THandle;|16: sg:boolean;|14: sz:TSize;|9: public|38: FileName,Bitmap,onLoad:THI_Event;|47: procedure doLoad(var Data:TData;idx:word);|47: procedure doDraw(var Data:TData;idx:word);|5: end;|0:|14:implementation|0:|5:const|31: IMGCHG_SIZE = $0001;|31: IMGCHG_VIEW = $0002;|31: IMGCHG_COMPLETE = $0004;|31: IMGCHG_ANIMATE = $0008;|31: IMGCHG_MASK = $000F;|0:|35: IMGLOAD_NOTLOADED = $00100000;|35: IMGLOAD_LOADING = $00200000;|35: IMGLOAD_STOPPED = $00400000;|35: IMGLOAD_ERROR = $00800000;|35: IMGLOAD_COMPLETE = $01000000;|35: IMGLOAD_MASK = $01F00000;|0:|35: IMGBITS_NONE = $02000000;|35: IMGBITS_PARTIAL = $04000000;|35: IMGBITS_TOTAL = $08000000;|35: IMGBITS_MASK = $0E000000;|0:|35: IMGANIM_ANIMATED = $10000000;|35: IMGANIM_MASK = $10000000;|0:|35: IMGTRANS_OPAQUE = $20000000;|35: IMGTRANS_MASK = $20000000;|0:|35: DWN_COLORMODE = $0000003F;|35: DWN_DOWNLOADONLY = $00000040;|35: DWN_FORCEDITHER = $00000080;|35: DWN_RAWIMAGE = $00000100;|0:|66: CLSID_IImgCtx:TGUID = '{3050f3d6-98b5-11cf-bb82-00aa00bdce0b}';|66: IID_IImgCtx:TGUID = '{3050f3d7-98b5-11cf-bb82-00aa00bdce0b}';|0:|0:|22:{ StringToWideString }|73:function StringToWideString(const s: String; codePage: Word): WideString;|17:var l: integer;|5:begin|16: Result := '';|23: if s = '' then exit;|80: l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);|28: SetLength(Result, l - 1);|23: if l <= 1 then exit;|93: MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), -1, PWideChar(@Result[1]), l);|4:end;|0:|63:procedure MyCallback(pCtx:pointer; pUserData:pointer); stdcall;|15:var stat:dword;|5:begin|39: with THiAsmClass(pUserData) do begin|14: sg := true;|37: FImgCtx.GetStateInfo(stat, sz, 0);|23: _hi_onEvent(onLoad);|6: end;|4:end;|0:|29:procedure THiAsmClass.doDraw;|54:var dt:TData; DC:hdc; R:TRect; Wnd:dword; bmp:PBitmap;|5:begin|23: if not sg then exit;|31: dt := ReadData(Data,Bitmap);|31: if _isBitmap(dt) then begin |26: bmp := ToBitmap(dt);|46: R := MakeRect(0,0,bmp.Width,bmp.Height);|41: FImgCtx.Draw(bmp.Canvas.Handle, R);|94: //FImgCtx.StretchBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,0,0,sz.cx,sz.cy,SRCCOPY)|18: end else begin |28: Wnd := ToInteger(dt); |28: if Wnd = 0 then exit; |29: DC := GetWindowDC(Wnd);|27: GetWindowRect(Wnd,R);|87: FImgCtx.StretchBlt(DC,0,0,R.right-R.Left,R.bottom-R.Top,0,0,sz.cx,sz.cy,SRCCOPY);|24: ReleaseDC(Wnd,DC);|10: end; |3: |4:end;|0:|29:procedure THiAsmClass.doLoad;|37:var s,s1:string; len:dword; fn:pchar;|5:begin|15: sg := false;|35: s1 := ReadString(Data,FileName);|43: len := GetFullPathName(@s1[1],0,nil,fn);|22: setlength(s,len-1);|43: GetFullPathName(@s1[1], len, @s[1], fn);|34: if not FileExists(s) then exit;|56: FImgCtx := CreateComObject(CLSID_IImgCtx) as IImgCtx;|52: FImgCtx.Load(PWChar(StringToWideString(s,3)), 0);|56: FImgCtx.SetCallback(@MyCallback, pointer(Self)); |46: FImgCtx.SelectChanges(IMGCHG_COMPLETE,0,1);|4:end;|0:|14:initialization|20: CoInitialize(nil);|12:finalization|17: CoUninitialize;|4:end.|
}
Add(DoData,12423105,266,329)
{
Data=String(Int\logo.jpg)
link(onEventData,11238333:doEvent1,[])
}
Add(Hub,11238333,315,329)
{
link(onEvent1,11301453:doLoad,[])
link(onEvent2,5895942:doRepeat,[(363,342)(363,384)])
}
Add(PaintBox,12516056,420,273)
{
Width=392
Height=266
Align=5
link(onBeforeDraw,11301453:doDraw,[(464,279)(464,311)(401,311)(401,342)])
}
Add(ImageLoader,11301453,413,329)
{
Point2AsOffset=0
ScaleMode=1
link(Bitmap,12516056:Bitmap,[])
}
Add(Application,5295562,455,378)
{
Wait=1
}
Add(Repeat,5895942,406,378)
{
Op1=Integer(1)
link(onRepeat,5295562:doProcessMessages,[])
link(Op2,11301453:Busy,[])
}


Да, еще забыл -- не понимаю концепцию отрисовки спрайтовых картинок. Какие нужны точки, какие нужны методы.

Из твоих соображений я понял, что:
1. Point1 и Point2 отвечают за вывод фона, но в отличии от стандартного режима, если он равны нулю, то берем фон окна.
2. Point1 и Point2 отвечают за вывод спрайта, но если равны нулю, что брать тогда, вобще не выводить, так что ли?
Не понятно, что дальше.
3. Как указать координаты начальной области спрайтов в изображении?
4. Как посчитать количество рабочих спрайтов, автоматически, или указать явно?
5. Как производить стробирование кадров, отдельным методом, типа -- doNextFrame, или как?
Много неясностей с эти методом.

карма: 22

0
Ответов: 9906
Рейтинг: 351
#80: 2008-01-27 01:41:33 ЛС | профиль | цитата
Элемент пока не ставил - завтра
Вот контр-пример для пакетной обработки


Add(MainForm,7649955,126,84)
{
Left=10
Top=10
Width=475
Height=444
Position=1
}
Add(InlineCode,13555273,308,91)
{
WorkPoints=#6:doDraw|6:doLoad|
EventPoints=#6:onLoad|
DataPoints=#8:FileName|6:Bitmap|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|56:uses Windows,Messages,Share,Debug,ActiveX,KOLComObj,KOL;|0:|4:type|32: IImgCtx = interface(IUnknown)|48: ['{3050f3d7-98b5-11cf-bb82-00aa00bdce0b}']|40: // Initialization/Download methods|68: function Load(pszUrl:PWChar; dwFlags:DWORD): HResult; stdcall;|93: function SelectChanges(ulChgOn:DWORD; ulChgOff:DWORD; fSignal:DWORD): HResult; stdcall;|83: function SetCallback(pCallback:pointer; pUserData:pointer): HResult; stdcall;|44: function Disconnect: HResult; stdcall;|0:|22: // Query methods|95: function GetUpdateRects(prc:PRect; var prcImg:TRect; var pcrc:integer): HResult; stdcall;|104: function GetStateInfo(var pulState:DWORD; var pSize:TSize; fClearChanges:DWORD): HResult; stdcall;|64: function GetPalette(var phpal:HPalette): HResult; stdcall;|0:|26: // Rendering methods|69: function Draw(_hdc:HDC; var prcBounds:TRect): HResult; stdcall;|107: function Tile(_hdc:HDC; var pptBackOrg:TPoint; var prcClip:TRect; var psize:TSize): HResult; stdcall;|120: function StretchBlt(_hdc:HDC; dstX,dstY,dstXE,dstYE,srcX,srcY,srcXE,srcYE:integer; dwROP:DWORD): HResult; stdcall;|5: end;|0:|28: THiAsmClass = class(TDebug)|10: private|21: FImgCtx:IImgCtx;|16: sg:boolean;|14: sz:TSize;|9: public|38: FileName,Bitmap,onLoad:THI_Event;|47: procedure doLoad(var Data:TData;idx:word);|47: procedure doDraw(var Data:TData;idx:word);|5: end;|0:|14:implementation|0:|5:const|31: IMGCHG_SIZE = $0001;|31: IMGCHG_VIEW = $0002;|31: IMGCHG_COMPLETE = $0004;|31: IMGCHG_ANIMATE = $0008;|31: IMGCHG_MASK = $000F;|0:|35: IMGLOAD_NOTLOADED = $00100000;|35: IMGLOAD_LOADING = $00200000;|35: IMGLOAD_STOPPED = $00400000;|35: IMGLOAD_ERROR = $00800000;|35: IMGLOAD_COMPLETE = $01000000;|35: IMGLOAD_MASK = $01F00000;|0:|35: IMGBITS_NONE = $02000000;|35: IMGBITS_PARTIAL = $04000000;|35: IMGBITS_TOTAL = $08000000;|35: IMGBITS_MASK = $0E000000;|0:|35: IMGANIM_ANIMATED = $10000000;|35: IMGANIM_MASK = $10000000;|0:|35: IMGTRANS_OPAQUE = $20000000;|35: IMGTRANS_MASK = $20000000;|0:|35: DWN_COLORMODE = $0000003F;|35: DWN_DOWNLOADONLY = $00000040;|35: DWN_FORCEDITHER = $00000080;|35: DWN_RAWIMAGE = $00000100;|0:|66: CLSID_IImgCtx:TGUID = '{3050f3d6-98b5-11cf-bb82-00aa00bdce0b}';|66: IID_IImgCtx:TGUID = '{3050f3d7-98b5-11cf-bb82-00aa00bdce0b}';|0:|0:|22:{ StringToWideString }|73:function StringToWideString(const s: String; codePage: Word): WideString;|17:var l: integer;|5:begin|16: Result := '';|23: if s = '' then exit;|80: l := MultiByteToWideChar(codePage, MB_PRECOMPOSED, PChar(@s[1]), -1, nil, 0);|28: SetLength(Result, l - 1);|23: if l <= 1 then exit;|93: MultiByteToWideChar(CodePage, MB_PRECOMPOSED, PChar(@s[1]), -1, PWideChar(@Result[1]), l);|4:end;|0:|63:procedure MyCallback(pCtx:pointer; pUserData:pointer); stdcall;|15:var stat:dword;|5:begin|39: with THiAsmClass(pUserData) do begin|14: sg := true;|37: FImgCtx.GetStateInfo(stat, sz, 0);|23: _hi_onEvent(onLoad);|6: end;|4:end;|0:|29:procedure THiAsmClass.doDraw;|25:var R:TRect; bmp:PBitmap;|5:begin|23: if not sg then exit;|34: bmp := ReadBitmap(Data,Bitmap);|43: R := MakeRect(0,0,bmp.Width,bmp.Height);|37: FImgCtx.Draw(bmp.Canvas.Handle,R);|4:end;|0:|29:procedure THiAsmClass.doLoad;|37:var s,s1:string; len:dword; fn:pchar;|5:begin|15: sg := false;|35: s1 := ReadString(Data,FileName);|43: len := GetFullPathName(@s1[1],0,nil,fn);|22: setlength(s,len-1);|43: GetFullPathName(@s1[1], len, @s[1], fn);|34: if not FileExists(s) then exit;|56: FImgCtx := CreateComObject(CLSID_IImgCtx) as IImgCtx;|52: FImgCtx.Load(PWChar(StringToWideString(s,3)), 0);|56: FImgCtx.SetCallback(@MyCallback, pointer(Self)); |46: FImgCtx.SelectChanges(IMGCHG_COMPLETE,0,1);|4:end;|0:|14:initialization|20: CoInitialize(nil);|12:finalization|17: CoUninitialize;|4:end.|
link(onLoad,12449022:doEvent1,[])
link(Bitmap,8488355:Bitmap,[(321,80)(349,80)(349,137)(426,137)])
}
Add(ODialog,5860046,189,35)
{
StartDir="\NewL\PHOTO\"
Select=1
link(onExecute,10822170:doAdd,[])
}
Add(ChildPanelEx,8488355,420,91)
{
Mode=1
link(Idx,3873157:Count,[(426,65)(291,65)(291,137)(209,137)])
}
BEGIN_SDK
Add(EditMultiEx,9206036,21,21)
{
WorkCount=#5:##add|7:##clear|9:doRefresh|
VarCount=#6:Bitmap|
DataCount=#3:Idx|
Height=151
Point(##add)
Point(##clear)
link(Bitmap,16669360:Bitmap,[(272,172)])
link(##add,9654242:doEvent1,[(35,27)(35,76)])
link(doRefresh,16669360:doRefresh,[(256,41)(256,62)])
}
Add(Panel,8865795,210,56)
{
Left=35
Top=105
Width=150
Height=150
Point(doColor)
Point(doLeft)
Point(doTop)
Point(Width)
Point(Height)
}
Add(PaintBox,16669360,266,56)
{
Width=200
Height=150
Align=5
}
Add(Math,11503749,147,70)
{
OpType=2
ResultType=0
link(onResult,8865795:doLeft,[])
link(Op2,8865795:Width,[(160,58)(188,58)(188,100)(223,100)])
}
Add(Math,13152450,98,70)
{
OpType=8
Op2=4
ResultType=0
link(onResult,11503749:doOperation,[])
link(Op1,13592451:Var2,[])
}
Add(Math,3623704,161,119)
{
OpType=2
ResultType=0
link(onResult,8865795:doTop,[(201,125)(201,83)])
link(Op2,8865795:Height,[(174,109)(230,109)])
}
Add(Math,717945,112,119)
{
OpType=7
Op2=4
ResultType=0
link(onResult,3623704:doOperation,[])
link(Op1,13592451:Var3,[(118,58)])
}
Add(Hub,9654242,49,70)
{
link(onEvent1,13152450:doOperation,[])
link(onEvent2,717945:doOperation,[(89,83)(89,125)])
}
Add(GetDataEx,13592451,91,49)
{
link(Data,9206036:Idx,[(104,21)])
}
END_SDK
Add(Hub,12449022,357,91)
{
OutCount=4
link(onEvent1,8488355:##add,[])
link(onEvent2,13555273:doDraw,[(402,104)(402,72)(298,72)(298,97)])
link(onEvent3,8488355:doRefresh,[])
link(onEvent4,8971666:doWork3,[(402,118)(402,143)(172,143)])
}
Add(Menu,8527488,21,21)
{
Menu=#4:File|1:(|4:Open|5:Close|1:)|
link(onSelectStr,5846604:doCase,[])
}
Add(Case,5846604,70,21)
{
Value=String(Close)
link(onNextCase,3174925:doEvent1,[])
link(onTrue,7649955:doClose,[(114,34)(114,111)])
}
Add(HubEx,8971666,168,91)
{
link(onEvent,3873157:doNext,[])
}
Add(StrList,10822170,238,35)
{
}
Add(Hub,3174925,126,21)
{
OutCount=5
link(onEvent1,8488355:##clear,[(410,27)(410,104)])
link(onEvent2,10822170:doClear,[(229,34)(229,48)])
link(onEvent3,5860046:doExecute,[])
link(onEvent4,3873157:doReset,[(179,48)(179,118)])
link(onEvent5,8971666:doWork1,[(172,55)])
}
Add(ArrayRW,16668781,252,98)
{
link(onRead,13555273:doLoad,[])
link(Array,10822170:Array,[])
}
Add(Counter,3873157,203,98)
{
Min=-1
link(onNext,16668781:doRead,[])
}
Сколько ни пытался найти "кучу обвязки", не получилось
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#81: 2008-01-27 19:55:26 ЛС | профиль | цитата
Galkov, ну у меня там тоже два элемента всего Repeat + Application.doProcessMessages и точка снизу -- текущее состояние флага, по аналогии со старым кодом.
------------ Дoбавленo:

Добавил Mosaic в свойство ScaleMode
------------ Дoбавленo:

Подумал над реализацией спрайтов -- кроме составления внешнего массива параметров (типа Int) ничего в голову не лезет, слишком много параметров надо передавать.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#82: 2008-01-28 21:47:31 ЛС | профиль | цитата
Дык я интересуюсь, ты закончил уже
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#83: 2008-01-28 23:29:24 ЛС | профиль | цитата
Galkov, а я тебя жду, твоих рекомендаций.
А ожидание завершения загрузки так и оставим пользователю? Может я и не прав, но что-то не нравится мне такая реализация, сложно как-то для обычного пользователя.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#84: 2008-01-29 05:08:41 ЛС | профиль | цитата
nesco писал(а):
сложно как-то для обычного пользователя

Это фактически ничем не отличается от Timer.onTimer
Дождаться ответа onTmer, чтобы сделать следующий doTimer - тоже непосильная задача "для обычного пользователя"

nesco, твоя самая главная проблема в том, что ты сам себе придумываешь сложности, которые потом начинаешь героически преодолевать, и говорить, что это слишком сложно "для обычного пользователя"
Да нет тут никаких особых сложностей...


Выложил вариант на SVN. Там ничего нового, только то, что сказал ранее, ну и "сложности" некоторые повыкидывал...
Говоря твоими словами - выполнены только ранее данные рекомендации

карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#85: 2008-01-29 10:20:11 ЛС | профиль | цитата
Galkov писал(а):
Говоря твоими словами - выполнены только ранее данные рекомендации
Скачал, посмотрел. Да уж, не хилый подход к теме...

А с движушимися спрайтами что придумать, отдельным методом делать, да и данные откуда брать, концепция интересная, но непонятная?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#86: 2008-01-29 13:56:00 ЛС | профиль | цитата
nesco писал(а):
Да уж, не хилый подход к теме...

Да нет там ничего "не хилого"
Это есть попытка не пудрить мозги, прежде всего - себе
У меня такое воспитание - Физика.
Для них (и, соответственно - для меня): концепция ОБЯЗАНА быть максимально простой - АКСИОМА.
Если она получается сложной, самое время озадачиться: стоп себе думаю, а не дурак ли я ???

Ну а технические приемы, специфические для HiAsm - так они не мной изобретены, и в кодах наших элементов неоднократно использованы...
Ну и конечно, всего многообразия комбинаций параметров я не испытывал - возможны и неточности

nesco писал(а):
А с движущимися спрайтами что придумать

Не понятен вопрос...
Если ты про тот gif, который я тебе показывал, то не надо ничего придумывать
Возможность взять нужный спрайт - ЕСТЬ, используя точки Point3/Point4
Куда его помещать (типа - двигается) - тоже ЕСТЬ, определяется точками Point1/Point2
Остальное - дело конструкторЕй
Грубо говоря - не твое это дело, не надо опять изобретать проблему. Ее просто нет

Если ты про анимированные рисунки, тогда - фиг его знает.
Ничего я про этот COM не читал
Хотя подозреваю, что как-то надо юзать константу IMGCHG_ANIMATE во время SelectChanges...
карма: 9

0
Ответов: 2125
Рейтинг: 159
#87: 2008-01-29 14:16:26 ЛС | профиль | цитата
Galkov писал(а):
про анимированные рисунки, тогда - фиг его знает

Вот именно. Я пробовал, ничего путного не вышло. Событие приходит несколько раз по числу кадров, НО непонятно как отрисовать кадр, потому что Draw всегда рисует конечный результат (последний кадр). Есть подозрение, что нужно запросить соответствующий интерфейс, но ни в MSDN, ни в интернете я ничего не нашёл.
карма: 1

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#88: 2008-01-29 14:54:32 ЛС | профиль | цитата
Galkov писал(а):
Остальное - дело конструкторЕй
Ну да, а спрашивать они меня будут, как это делается...

Galkov писал(а):
Если ты про анимированные рисунки, тогда - фиг его знает

А может, ну их... Спрайты и то интереснее, там и *.gif, и *.png анимировать можно.
------------ Дoбавленo:

Я так подумал, что не хватает одного метода, реализующего метод очистки целевого прямоугольника -- InvalidateRect c bErase=True, иначе, спрайты наложаться друг на друга, да и отрисовка такого безобразия может быть только на окне.
карма: 22

0
Ответов: 9906
Рейтинг: 351
#89: 2008-01-29 15:05:13 ЛС | профиль | цитата
nesco писал(а):
Ну да, а спрашивать они меня будут, как это делается...

Продолжаю твою логику:
Из-за того, что "простой пользователь" не знает как решать квадратные уравнения, мне следует забить эти формулы в MathParser
Потому-что они меня спрашивать будут, что-ли
ПОЛНЫЙ БРЕД

И кто, простите, тебе дал право считать "простого пользователя" настолько тупым - не пойму
Например, я себе этого не позволяю (и никогда не позволял - это если вдруг начнешь ссылаться на мои первые посты).
И кто тебе сказал, что тот алгоритм, который ты заложишь, удовлетворит пользователя в его конкретной задаче.
Ты же не знаешь его конкретную задачу
Ну привел же я тебе пример пакетной обработки без принудительной обработки очереди.
Но все время я не буду такие примеры приводить, потому-что это быстро надоедает.

Заняться тебе что-ли нечем, что начинаешь решать (за каким-то лядом) задачи, которые никто не ставил

------------ Дoбавленo:

nesco писал(а):
Я так подумал, что не хватает одного метода, реализующего метод очистки целевого прямоугольника

Зря подумал.
Сказали же тебе: кончай думать (не твое это дело)
Потому-что, следующее, до чего ты додумаешься, будет не очистка, а заполнение фоном из дугого рисунка, или еще какая-нибудь фигня
карма: 9

0
Разработчик
Ответов: 26151
Рейтинг: 2127
#90: 2008-01-29 15:28:11 ЛС | профиль | цитата
Galkov, что-ты ругаться сразу.

Я просто сталкивался с отображением двигающихся картинок (да и читал про это в инэте). К чему я предложил метод очистки целевого прямоугольника, а к тому, что иначе придется перерисовывать весь фон, чтобы стереть предыдущий кадр, а это приведет, соответственно, к появлению артефактов, и вызовет ответное нарекание пользователей.

Тут надо просто попробовать, и, если надо будет добавить стирание, то добавить его.

Galkov писал(а):
И кто, простите, тебе дал право считать "простого пользователя" настолько тупым - не пойму

Тупыми не считаю, но вот слишком даже ленивыми -- да. "А кто бы за меня подумал" -- их каждодневный девиз. И вот поэтому, я иногда отмалчиваюсь, зная, что они могут сделать, но не хотят -- не надо думать за всех, надо научить их думать (с).



карма: 22

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)