Sonicthedgehog 发表于 2015-9-3 01:36:02

2015-9-3 01:34:30

啊,已经好久没更过了。

刚刚解决了最最棘手的问题,拖动画面时的FPS从原来的10帧左右骤升至60。
画面也变的十分流畅了。

先这么一说,明天会更,今天是放个预告。

以上。

Sonicthedgehog 发表于 2015-8-27 23:58:31

2015-8-27 23:41:58

本来以为今天能写完连带基本绘制的图块选取,谁知道倒腾个布局耗了俩小时……
{:18:}
我也没啥可说的啦,成果图如下。
http://cdn.duitang.com/uploads/item/201508/27/20150827234644_J2cEh.gif

看着挺省劲就做出来了是吧……中间真是几经波折啊……
刚开始是按照用Animation操作Image控件的位置来达到滚动的效果,后来发现净是遮挡问题。
然后又来回来去地调XAML中各个Grid在代码中的位置,不过到后来还是会有问题,就像这样。http://ww2.sinaimg.cn/mw1024/a6abbfe5jw1evhk2ka4z0j20rs0go47d.jpg
真是蛋痛啊……或许你说再用个Grid遮住上边标题栏不就可以了吗?
恩恩,聪明。但是窗体就没法拖动了,标题也显示不了了,GG。
{:32:}
最后还是用了cRenderEngine解决。因为每次重绘都挺费CPU的,所以没法做上平滑的滚动效果了……
{:09:}

没完,然后还有这四个负责滚动的Grid的显示与否的判断,来回折腾半天。

结果最后就做成这样了……

并没有更很多嘛!
{:06:}

嘛算了,明天去考科目二了。但愿这次能过了吧。
下午回来有的是时间继续更。

以上。



Sonicthedgehog 发表于 2015-8-26 00:41:21

2015-8-26 00:21:27

又是一大更。

啊啊这次更总共拖了3天,中间又写过什么东西都记得不是很清楚了……

更新总结:
1.地图和鼠标标记分层绘制,提升效率。
2.图块选择那里可以显示图了
3.图块选择那里配色改变
4.图块选择(怎么又是你)那里增加了移动图片的箭头。
5.解决了窗体焦点的问题

详细说明:
1.其实就是弄了两个Image控件叠着放,不过在两个上边画的话,地图的那个Image控件的更新频率就不用太频繁了。鼠标移动不拖拽地图的时候不用重绘,只画鼠标就OK啦。
{:37:}←我真TM机智
2.新的_cREsub As cRenderEngine解决了这个问题,这个Engine关联的Image控件是右边那块。
3.标题栏是蓝色的,图块选择确实黑色的。虽然不知道你们怎么看,不过我还是给换了,如果你们觉得有更好的配色方案可以告诉我啊~下面会有图展示效果的。
4.嗯,因为图块选择可以显示图了,所以就发现了这个问题。实际制作素材的时候没有按照统一的规格(长?x32和宽8x32)去做,所以就成这样了。
http://cdn.duitang.com/uploads/item/201508/26/20150826003825_yKUwf.png
所以要加上滚动条。但是默认的ScrollBar好像调了显示也没用啊。没办法,自己做吧!
{:03:}
5.为了测试,把打开地图按钮的部分给做了(中间省去描述坑爹WPF的OpenFileDialog破问题的文字若干)。然后发现……
每一次按空格加鼠标拖拽地图窗体焦点都会回到按钮上,然后就又打开地图了……
简直神烦!用别的Grid.Focus没什么卵用,禁用按钮对按键的反应也不会,于是用了折中的方法。
-MetroWindow里边所有的事件变成Preview的。
-加了个小按钮用来吸引焦点。(这时候才发现Grid.Focusable是=False的)
http://img4.duitang.com/uploads/item/201508/26/20150826003854_XZeSL.png
{:37:}←我真TM机智

最后,展示成果的时间到啦~
这个颜色稍微有点问题,你们不要在意啦~
http://img4.duitang.com/uploads/item/201508/26/20150826002016_QxWBn.gif

嗯。就是这些了。

以上。

Sonicthedgehog 发表于 2015-8-22 02:49:42

2015-8-22 02:30:33

今日一大更!
图像引擎部分算是完工啦!
{:04:}
读取什么的啊,画在什么什么空间上啊,画什么啊,图片存在哪里啊,统统解决!

总之,成品效果图:

尝试加载了一张地图,能绘制,能拖拽,简直效果超棒!(就是拖动的时候绘制略慢)
顺便上边那个小圆圈是鼠标位置的提示~
{:25:}
恩恩,看起来当然很简单咯~其实并不简单啊……
说一下细节上的修改吧。
首先是cTex(图像)类,相对于昨天,修改过的方法/函数已经用绿色箭头标注出来了,而且不用的方法已经划掉了(红色)。修改也是很累的啊,完全不同的绘制方法。之前因为臭毛病没做注释还看了一会这四个DrawGraph有什么不同才理解……然后才改成现在的代码。

cTex类里边也加了两个比较方便的属性。

cRE是用来确定缓冲和绘制表面什么的,下边那个就是为了测试效果用的啦。

嗯。说到cRenderEngine,也有了一些更新。

New就不说了,Begin和End是对缓冲区的操作和写入到控件那里去。

为了实现能拖拽地图,主窗体里边也加入了不少事件。


最后实现了今天的目标啊哈哈哈哈哈!我竟然更完了今天的进度啊哈哈哈哈!
{:09:}
↑这就是过节被虐的表情↑


哦哦哦,还是得再说一次,右边那个边栏是可以打开的啦~打开之后真的不会冲掉下边盖着的图,不需要我来重绘。之前灰色背景右边没图片所以看不出来所以再说一遍~
{:26:}
明天就去THO啦(应该是今天)!买买买~

以上!

Sonicthedgehog 发表于 2015-8-21 00:24:51

2015-8-21 00:16:47

来到了上海!

吃得好饱!

电脑摔了个角!

门里被塞了奇怪的东西!
{:18:}
等等奇闻异事。不过风吹雨打还是要更TDA。
今天也算是把上次攻破的难点(图像分割)应用到了原来的引擎里,替换掉了一部分代码,新的东西也加进去了。
这个过程能算是复刻吗?总之是费了一番功夫。
测试效果图:

分割效果正常,超高兴。
{:04:}
明天要去未来4年的大学踩踩点儿,下午应该是去世博园,晚上逛逛外滩?总之我还是想留出点时间更TDA。
下一步要做到读取地图并显示了,要做到这个可能要费点功夫啊,不知道明天能不能更。

BTW:22号求组队求面基!
{:04:}
以上。

Sonicthedgehog 发表于 2015-8-19 00:55:38

2015-8-19 00:50:10

今日在外用公用WIFI结果密码被盗……
{:24:}
就是因为上边这个事儿,我本来挺高兴的,引擎初步写了一点,结果233333我直接气得半死……
今天太晚了不发图了,催睡觉,明天开始微博和喵玉殿同步更新吧。

放心吧,我各种密码都已经改过一遍了,能绑定手机的都绑定了。
两个扣Q,一个幺63,一个微伯, 一个黑东,都改了。
我真是服……不服不行……服得不行……
早知就应谨记老师教诲,随便一个U盘系统的BT6就能破WIFI密码……
何况那是2年前啊啊啊啊啊……
{:24:}
各位也吃我个教训吧……

以上。

drzzm32 发表于 2015-8-17 22:29:19

Sonicthedgehog 发表于 2015-8-17 17:46 static/image/common/back.gif
2015-8-17 17:29:17




Imports System.Windows.Threading
Imports System.Security.Permissions

Public Class DispatcherHelper
    <SecurityPermissionAttribute(SecurityAction.Demand, Flags:=SecurityPermissionFlag.UnmanagedCode)>
    Public Shared Sub DoEvents()
      Dim frame As New DispatcherFrame()
      Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, New DispatcherOperationCallback(AddressOf ExitFrames), frame)
      Try
            Dispatcher.PushFrame(frame)
      Catch generatedExceptionName As InvalidOperationException
      End Try
    End Sub
    Private Shared Function ExitFrames(frame As Object) As Object
      DirectCast(frame, DispatcherFrame).Continue = False
      Return Nothing
    End Function
End Class
代码在此~

Sonicthedgehog 发表于 2015-8-17 17:46:26

2015-8-17 17:29:17

{:24:}
原谅我这两天感冒啦,目前还没有好,不过也没至于到不能肝代码的程度。
就在今天下午把测试绘制部分的代码写好了,引擎也可以重制啦。
引擎只调用.NET的代码,可以绘制在不同的控件里。

重制引擎的方法也很简单,方法和函数的名字不变,只需要把内容换成不用DX也能达到相同目的的代码就可以了,另外再加一点新的方法和属性什么的,以增加绘制到不同控件的功能。
{:04:}

测试代码:
哦哦,刚才还在后边加入了内存释放,测试也没问题。
(虽然是dim,资源会自动回收,不过将来写在类里就没人帮我回收啦)
DPI那里还不太会获取系统的DPI值,求直接给段现成的代码QAQ(←不过目前不影响绘制)
{:12:}

测试效果:

另外,右边的边栏打开和收回不会清掉主Image里边的图,非常好。
再另外就是遇到了线程的问题,将来拖拽地图的时候肯定得一边拖以便重回刷新控件,
然而.NET4.5没有Doevents()了,我超难受啊!!!
只能用Dispatcher了,但是又不会……
{:16:}
求帮忙!

再另外:我以后想每次发帖都在微博里边也发一份,
1来方便吸引人气,2来方便比我厉害的大佬装逼打我脸,这样我就能抱大腿啦!
{:05:}

以上。

drzzm32 发表于 2015-8-15 23:02:49

感觉我们项目结构不同啊

你是把每个类都单独一个文件的?


Sonicthedgehog 发表于 2015-8-15 00:12:16

2015-8-15 00:07:15

唔……算是把地图这块弄进来了。
但是原来的绘图引擎不能用,因为这次的绘制得分两部分了,一部分主界面,一部分在侧边图块选取那里。
引擎还得接着写,不过应该都是.NET现成的,会好些。

然后里边用过的Rectangle结构和WPF里边的Rectangle结构不一样,需要每个都校正一遍意思。
其实今天干的事情很少……因为赶猪去了。
赶猪去了……猪去了……去了……了……

我真是干了猪了!

以上!(%#@&(*¥&!(%&*!#!
页: 1 2 3 [4] 5 6 7 8 9 10 11 12 13
查看完整版本: 【史前】TouhouDungeonAdventrue 从开始制作到做完的记录